【发布时间】:2021-02-25 13:46:17
【问题描述】:
void loop(char * a){
for(int i=0;i<10;i++){
printf("%s\n", a);
}
}
int main(){
char str[] = "";
printf("input:");
scanf("%[^\n]s", str);
loop(str);
return 0;
}
输入短字符串没有问题, 但问题是当我输入更长的字符串时。
例如,
输入:abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
abcdefghijkl
输入:
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
abcdefghijklm
已退出,分段错误
为什么会出现这个错误? 这和缓冲区溢出有关吗?
【问题讨论】:
-
str是一个大小为 0 的数组。 -
我认为有一个错字,你的循环函数没有被调用..
-
@Damien 大小为 1(仅包含终止空字符)
-
还值得一提的是哪些是分段错误的根本原因。它可以帮助了解哪个内存区域触发了故障。 stackoverflow.com/questions/2346806/…
-
@MarcoFrau 感谢您的建议!下次我会处理那部分。
标签: c segmentation-fault