调用fgets时出现分段错误

我正在尝试编写一个简单的程序来读取纯文本列表中列出的文件中的数据,但是当我尝试在我的processFile函数中调用fgets()时,我一直遇到分段错误。

如果我只是调用processFile(“file.txt”)这样的东西就不会发生,但是当我尝试通过我的processList函数调用processFile时就会发生这种情况。

#include  #include  #include  void processFile (char *file) { char line[256]; FILE* pgmFile; pgmFile = fopen(file, "r"); fgets(line, 200, pgmFile); // Seg fault here fclose(pgmFile); } // Runs processFile on every file listed in list void processList (char *list) { FILE *pgmList; pgmList = fopen(list, "r"); char line[256]; while (fgets(line, 255, pgmList) != NULL) { processFile(line); } fclose(pgmList); } int main () { processList("downgesture_test1.list"); } 

尝试检查fopen返回值。 如果它是NULL怎么办? 因为您的“文件名”可能会尾随\n

如果文件不存在,fopen将返回NULL。 在调用fopen之后添加一些error handling,你的列表中可能只有一个错误的条目。

可能发生的是pgmFile为NULL,fgets尝试访问它,导致seg错误。