C - 为什么 fopen 不起作用?

C - Why fopen doesn't work?

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

#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 相同的文件夹中。我还尝试提供文件的完整路径和存储文件名的数组。每次输出 "Error!".

怎么回事??

我在 Windows 10 64 位上使用 Eclipse Neon.2 Release (4.6.2) 和最新的 cygwin gcc 编译器。

感谢您的帮助!

perror 可能会有帮助。

FILE *file_ptr = fopen("file.txt", "r");
if (!file_ptr) {
  perror("fopen");
} else {
  printf("It's working!");
}

类似问题:fopen() not working in C

问题已通过将 fopen 更改为

解决
file_ptr = fopen("xxyyzzqq.txt", "w");

然后搜索硬盘以查看文件的创建位置。

事实证明该文件是在项目源目录中创建的,而不是在调试目录(.exe 文件所在的位置)中创建的,这与使用调试目录作为工作目录的旧安装不同。