【发布时间】:2016-08-01 16:16:32
【问题描述】:
我是 C 新手,我只是想阅读我在 C 中创建的一个简单文本文件。我通过单击新建 -> 空文件 -> 将其保存到我想要的位置然后添加文件扩展名 ( .txt) 文本文件包含一个示例数独板,完整文件名为 sudokuchar.txt。
我必须从文件中读取并打印出来的代码是:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fpointer = fopen("sudokuchar.txt", "r");
char input[100];
while(fgets(input,100,fpointer))
{
printf("%s",input);
}
fclose(fpointer);
}
所以当我编译程序时不会打印任何内容并返回 -1。我认为我试图读取的文件有问题??如果有人可以提供帮助,将不胜感激。
【问题讨论】:
-
"我想要的位置" - 除非想要的位置也是进程运行时的活动工作目录,否则发布的代码将无法找到该文件,
fopen将返回 NULL。未能检查这一点,而是错误地假设它刚刚工作,将 NULL 作为文件指针传递给fgets然后调用未定义行为。似乎一些错误检查和运行时启动配置更改是按顺序进行的。 -
那么如何将文件保存到活动工作目录?
-
另请注意,
main ()是int类型的函数,在退出时应向 shell 返回零或正 8 位 值(例如 @987654326 @ 如果没有错误,1-255错误)。另请注意,main的正确声明是int main (void) {...或int main (int argc, char *argv[]) {...(您将看到等效的char **argv而不是*argv[],并且还有一些编译器接受的其他不可移植参数)。这不会导致读取失败(很可能是fopen失败),但正确掌握基础知识会有所帮助。