作者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/cn.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