bad*_*bum 2 c segmentation-fault
所以我面临一个奇怪的问题.当声明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);
}
Run Code Online (Sandbox Code Playgroud)
但即使我使用它,也就是说y++;,在printf我仍然遇到分段错误之后.
在printf之后我仍然得到了seg.故障.
那么,段错误可能是由原因A引起的,并且只是在一段时间后被捕获.
这一行:fscanf(ptr, "%s", a)正在读取字符串a而不先分配内存 - > UB.
UB仅在printf.修复a与a=malloc(SOME_SIZE)或char a[SOME_SIZE],这应该消失