无法使用fopen()打开文件

我一直在尝试打开文件和输出文本,但我一直在收到错误。 所以我想我会从一开始就尝试打开文件。 这是我的代码:

#include  #include  #define CORRECT_PARAMETERS 3 int main(void) { FILE *file; file = fopen("TestFile1.txt", "r"); if (file == NULL) { printf("Error"); } fclose(file); } 

当我运行该文件时,“错误”被打印到控制台,就是这样。 TestFile1.txt与我的.exe位于同一位置。 我该如何解决?

而不是printf("Error"); ,你应该尝试perror("Error") ,它可能会打印失败的实际原因(如权限问题,无效参数等)。

你是如何运行该文件的? 它来自命令行还是来自IDE? 您的可执行文件所在的目录不一定是您的工作目录。

尝试使用fopen的完整路径名,看看是否修复了它。 如果是这样,则问题如上所述。

例如:

 file = fopen("c:\\MyDirectory\\TestFile1.txt", "r"); file = fopen("/full/path/to/TestFile1.txt", "r"); 

或者打开命令窗口并导航到可执行文件所在的目录,然后手动运行它。

顺便说一句,你可以插入一个简单的(分别用于Windows或Linux / UNIX / BSD / etc):

 system ("cd") system("pwd") 

fopen之前显示你实际所在的目录。

一点点错误检查有很长的路要走 – 您可以随时测试errno的值或调用perror()或strerror()以获取有关fopen()调用失败原因的更多信息。

否则,关于检查路径的建议可能是正确的…很可能您不在您认为来自IDE的目录中,并且没有您期望的权限。

那么,现在您知道存在问题,下一步是弄清楚错误到底是什么,编译运行时会发生什么?:

 #include  #include  int main(void) { FILE *file; file = fopen("TestFile1.txt", "r"); if (file == NULL) { perror("Error"); } else { fclose(file); } } 

您的可执行文件的工作目录可能设置为保存它的目录以外的其他目录。 检查IDE设置。

尝试使用文件名的绝对路径。 如果您使用的是Windows,请使用getlasterror()查看实际的错误消息。

必须已将输出文件夹目录配置为IDE中的某个其他目录。 您可以更改它或用整个文件路径替换文件名。

希望这可以帮助。

除上述内容外,您可能还有兴趣显示当前目录:

 int MAX_PATH_LENGTH = 80; char* path[MAX_PATH_LENGTH]; getcwd(path, MAX_PATH_LENGTH); printf("Current Directory = %s", path); 

这应该在gcc / glibc平台上没有问题。 (我最熟悉那种类型的平台)。 如果您使用的是Windows类型平台,那么此处发布了一个关于getcwd和Visual Studio的问题。