gpt4 book ai didi

c - fscanf() seg fault 程序接收到信号 EXC_BAD_ACCESS

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:01 26 4
gpt4 key购买 nike

 16     char* input = (char*) argv[1];
17 FILE *fp = fopen (input, "r");
18 if( fp == NULL)
19 {
20 printf(" reading input file failed");
21 return 0;
22 }
23 fseek(fp,0,SEEK_END);
24 int file_size = ftell(fp);
29 rewind(fp);
30 int i;
31 int totalRun;
32 char * temp;
33 char* model;
34 char* example;
36 fscanf(fp,"%d",&totalRun);
37 fscanf(fp,"%s",model);

上面是我的代码,我在第 37 行“fscanf(fp,”%s”.model)”出现了这个错误

程序收到信号 EXC_BAD_ACCESS,无法访问内存。原因:KERN_PROTECTION_FAILURE at address: 0x00007fff5fc00730 0x00007fff8db20bcb in __svfscanf_l ()

这是什么原因造成的??我查看了 gdb 中的 *fp。在读取 totalRun _offset = 0 之前和读取 _offset = 4096 之后。totalRun 的内容是正确的(“3”)。我只读了一行,为什么偏移量是 4096?还有 _blksize 在 FILE 中指的是什么。

谢谢

最佳答案

你需要为model分配内存,它是一个未初始化的指针。还要确保 fscanf() 不会读取超出分配给 model 的数组。如果 model 不需要动态分配,则只需使用本地数组。例如:

char model[1024];
if (1 == fscanf(fp, "%1023s", model))
{
}

总是检查fscanf()的返回值,它返回成功赋值的次数,否则如果调用程序将处理未初始化的变量fscanf() 失败。

关于c - fscanf() seg fault 程序接收到信号 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12896345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com