C - 为什么fopen不起作用?

时间:2017-01-30 20:30:47

标签: c fopen

我有这个非常简单的代码:

#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编译器。

感谢您的帮助!

2 个答案:

答案 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