所以我遇到了一个奇怪的问题。在声明随后未使用的 int
时,出现段错误。当我删除声明时,代码运行完美。怎么会这样?
FILE* ptr = fopen("prueba.txt", "r");
int x;
char* a;
int y = 0; //this cause the seg fault.
do{
while (fscanf(ptr, "%i", &x)!=-1){
fscanf(ptr, "%s", a);
printf("%i %s ",x, a);
}
fseek(ptr, 0, SEEK_SET);
}while(1);
fclose(ptr);
}
但即使我使用它,比如 y++;
,在 printf
之后我仍然遇到段错误。
最佳答案
after printf I still getting seg. fault.
嗯,段错误可能是由原因 A 引起的,并且只会在一段时间后被发现。
这一行:fscanf(ptr, "%s", a)
正在将字符串读入 a
而没有先分配内存 -> UB。
UB 仅在 printf
处被调用。使用 a=malloc(SOME_SIZE)
或 char a[SOME_SIZE]
修复 a
,这应该会消失
关于c - 涉及未使用变量的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45191304/