c - 涉及未使用变量的段错误

标签 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);
}

但即使我使用它,比如 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/

相关文章:

c - yes 或 no 退出 switch 语句

c - 循环获取主机、网络、协议(protocol)和服务数据库中的多个条目

linux - 什么实际打印 "Segmentation fault"?

c - 在一个函数而不是另一个函数中访问同一内存时发生段错误

可变旋转 RC6 密码的恒定时间实现

c - 在 GCC 中禁用字符串的 NUL 终止

c - 在 C 中使用定界符拆分字符串 - 段错误,无效自由

c - 内存分配违规后 free() 的奇怪行为

c - 在 while 循环中使用 execvp 和 fork 时无限循环

C memmove 相当于 for 循环 - 段错误