我正在尝试编写一个简单的程序来读取纯文本列表中列出的文件中的数据,但是当我尝试在我的processFile函数中调用fgets()时,我一直遇到分段错误。
如果我只是调用processFile(“file.txt”)这样的东西就不会发生,但是当我尝试通过我的processList函数调用processFile时会发生这种情况。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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");
}
答案 0 :(得分:3)
尝试检查fopen
的返回值。如果它是NULL
怎么办?因为您的“文件名”可能会尾随\n
。
答案 1 :(得分:1)
fopen将返回NULL。在调用fopen之后添加一些错误处理,你的列表中可能只有一个错误的条目。
可能发生的是pgmFile为NULL,fgets尝试访问它,导致seg错误。