#include <stdio.h>
#include <stdlib.h>
int main()
{
char c[1000];
FILE *fptr;
if ((fptr = fopen("program.txt", "r")) == NULL)
{
printf("Error! opening file");
// Program exits if file pointer returns NULL.
exit(1);
}
// reads text until newline
fscanf(fptr,"%[^\n]", c);
printf("Data from the file:\n%s", c);
fclose(fptr);
return 0;
}
输出错误!打开文件
我在同一个目录中有程序和txt文件。 如何直接访问该文件?
答案 0 :(得分:1)
根据评论中的建议,尝试将printf
替换为perror
if ((fptr = fopen("program.txt", "r")) == NULL)
{
perror("Error");
// Program exits if file pointer returns NULL.
exit(1); // Exiting with a non-zero status.
}
perror
原型是
void perror(const char *str)
其中str
是包含要在错误消息本身之前打印的自定义消息的C字符串。
然而,文件未被读取的一些原因是
chmod
?答案 1 :(得分:1)
要进行诊断,请使用系统命令发出 ls 或 dir ,具体取决于您的平台。这会告诉你你在哪里跑步。可能性与您尝试打开的文件位置不同。
答案 2 :(得分:1)
我在Borland 的 TURBOC ++上快速运行了你的程序,它没有抱怨任何警告或错误执行
如前面发布的答案中所述,您应该将printf
替换为perror
CURRENT REPLACE BY
printf("Error! opening file"); perror("Error! Opening File.");
在您找不到文件的情况下printf("Error! opening file");
会导致:
<强> Error! Opening file.
强>
但是如果文件perror("Error! Opening File.");
不存在program.txt
,则可能会出现与此类似的内容,因为程序输出为
<强> The following error occurred: No such file or directory
强>
从上述解释中可以明显看出差异。
关于你的程序,我假设你的文件路径错误或编译器有问题。
尝试以w+
模式打开文件,以确保文件存在。