涉及未使用变量的分段错误

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我仍然遇到分段错误之后.

CIs*_*ies 5

在printf之后我仍然得到了seg.故障.

那么,段错误可能是由原因A引起的,并且只是在一段时间后被捕获.

这一行:fscanf(ptr, "%s", a)正在读取字符串a而不先分配内存 - > UB.

UB仅在printf.修复aa=malloc(SOME_SIZE)char a[SOME_SIZE],这应该消失