【发布时间】:2012-09-26 20:19:17
【问题描述】:
我正在尝试编写一个简单的程序来从纯文本列表中列出的文件中读取数据,但是当我尝试在我的 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");
}
【问题讨论】:
-
在成功完成 fopen()、fdopen() 和 freopen() 后返回一个 FILE 指针。否则,返回 NULL 并设置 errno 以指示错误。请检查 fopen() 返回的内容。生活并不总是完美的。文件可能无法访问。
-
老兄 - 错误检查!在尝试读取之前确保“fopen()”成功;)
标签: c segmentation-fault