我有这个非常简单的代码:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
FILE * file_ptr = NULL;
file_ptr = fopen ("file.txt", "r");
if (file_ptr == NULL)
{
puts ("Error!");
return EXIT_FAILURE;
}
else
{
puts ("O.k.!");
}
return EXIT_SUCCESS;
}
输出:
Error!
为什么fopen不起作用?该文件不受保护,不在其他地方打开,并存储在与此程序的* .exe相同的文件夹中。我也尝试了提供文件的完整路径和数组,其中存储了文件名。每次它发出“错误!”。
发生了什么事?
我在Windows 10 64bit上使用Eclipse Neon.2 Release(4.6.2)和最新的cygwin gcc编译器。
感谢您的帮助!
答案 0 :(得分:3)
通过将fopen
更改为
file_ptr = fopen("xxyyzzqq.txt", "w");
然后搜索硬盘以查看文件的创建位置。
事实证明,该文件是在项目源目录中创建的,而不是调试目录(.exe文件所在的目录),这与使用调试目录作为工作目录的旧安装不同。
答案 1 :(得分:1)
perror
可能有帮助。
FILE *file_ptr = fopen("file.txt", "r");
if (!file_ptr) {
perror("fopen");
} else {
printf("It's working!");
}
类似的问题:fopen() not working in C