c ++ fgets分段错误(核心转储)

时间:2015-03-24 14:41:50

标签: c++ fgets

包含以下代码段的完整代码集可以编译出任何错误。但是,当我运行可执行文件时,我收到错误"分段错误(核心转储)"当执行第401行时。

我做了一些调试,我知道"真实"第397行调用了文件名,我已确认" cur_step_buff"是4096.

此外,如果需要更多代码来帮助解决此问题,请与我们联系。

以下是代码:

393: FILE *fd;
394: char fd_name[512];
395: strcpy(fd_name,npb_list[freq][app][thread].file_name);
396: fopen( fd_name, "r");
397: cout << "fd_name = " << fd_name << "\n";
398: char cur_step_buff[4096];
399: cout << sizeof(cur_step_buff) << "\n";
400: cout << “location line 400\n”; 
401: fgets (cur_step_buff, sizeof cur_step_buff, fd);
402: int isEnd=0;
403: int last_step=0;

2 个答案:

答案 0 :(得分:0)

您可能打算将某些内容分配给fd。可能是fopen(fd_name, "r");

的结果

答案 1 :(得分:0)

事实证明fd / fopen没有在第396行初始化

以下修改后的代码允许我的程序运行:

以下是代码:

393: FILE *fd;
394: char fd_name[512];
395: strcpy(fd_name,npb_list[freq][app][thread].file_name);
396: fd = fopen( fd_name, "r"); // <<- change made to this line
397: cout << "fd_name = " << fd_name << "\n";
398: char cur_step_buff[4096];
399: cout << sizeof(cur_step_buff) << "\n";
400: cout << “location line 400\n”; 
401: fgets (cur_step_buff, sizeof cur_step_buff, fd);
402: int isEnd=0;
403: int last_step=0;