作者mouwat (QQ)
看板C_and_CPP
標題[問題] 新手試解leetcode的問題(access violation)
時間Thu Aug 29 11:03:24 2019
最近邊看C的書想說邊試著一些簡單的leetcode
1108. Defanging an IP Address
https://leetcode.com/problems/defanging-an-ip-address/
錯誤截圖
https://imgur.com/lC1ovhg
在解的時候雖然有想法了 但是編譯不過
不太確定語法哪裡有問題所以想請大家指點一下
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
char Defang_Result[22];
char * defangIPaddr(char * address){
int count_1=0, count_2=0;
for(count_1=0;count_1<
22;count_1++){
if(*(address+count_1)!='.'){
Defang_Result[count_2]=*(address+count_1);
count_2++;
}
else{
Defang_Result[count_2]='[';
count_2++;
Defang_Result[count_2]='.';
count_2++;
Defang_Result[count_2]=']';
count_2++;
}
}
return (Defang_Result);
}
補充說明(Supplement):
Leetcode
1108. Defanging an IP Address
C language
感謝熱心的cutekid教學
在把該行修改後已可跑出結果
for(count_1=0;count_1<
strlen(adress);count_1++){
原因應為對adress超出範圍的讀取造成access violation
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.199.12 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1567047807.A.2CE.html
1F:推 ko27tye: 先猜Defang_Result[22]沒初始化讀到怪東西 08/29 11:32
2F:→ mouwat: 第一組測試值是1.1.1.1 我有試宣告長度14剛好答案長度 08/29 11:39
3F:→ mouwat: 但還是有問題 08/29 11:39
4F:推 idiont: runtime error不是編譯錯誤 是執行過程錯誤 可能是陣列超 08/29 12:27
5F:→ idiont: 出範圍造成的 08/29 12:27
6F:推 idiont: count1應該跑到字串結尾就要結束了 不然再跑下去count2可 08/29 12:34
7F:→ idiont: 能就超出範圍了 08/29 12:34
8F:→ mouwat: 謝謝你 我會先查一下access violation相關的東西 08/29 12:37
9F:→ mouwat: 以後這類長度未知的變數也會多注意 08/29 12:38
※ 編輯: mouwat (223.137.199.12 臺灣), 08/29/2019 12:47:12
10F:→ dces4212: 不用查 就單純OOB access 注意不要犯就好 09/01 01:00