我一直在尝试打开文件并输出文本,但我一直在收到错误。所以我想我会从一开始就尝试打开文件。这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#define CORRECT_PARAMETERS 3
int main(void)
{
FILE *file;
file = fopen("TestFile1.txt", "r");
if (file == NULL) {
printf("Error");
}
fclose(file);
}
当我运行文件时,“错误”会被打印到控制台,就是这样。 TestFile1.txt与我的.exe位于同一位置。我该如何解决?
答案 0 :(得分:21)
而不是printf("Error");
,您应该尝试perror("Error")
,这可能会打印失败的实际原因(如权限问题,无效参数等)。
答案 1 :(得分:10)
你是如何运行该文件的?是来自命令行还是来自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
之前显示您实际所在的目录。
答案 2 :(得分:5)
一点点错误检查有很长的路要走 - 你总是可以测试errno的值或调用perror()或strerror()来获取有关fopen()调用失败原因的更多信息。
否则有关检查路径的建议可能是正确的...很可能您不在您认为来自IDE的目录中,并且没有您期望的权限。
答案 3 :(得分:4)
嗯,现在您知道存在问题,下一步是弄清楚错误到底是什么,编译运行时会发生什么?:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *file;
file = fopen("TestFile1.txt", "r");
if (file == NULL) {
perror("Error");
} else {
fclose(file);
}
}
答案 4 :(得分:3)
您的可执行文件的工作目录可能设置为保存目录以外的其他目录。检查IDE设置。
答案 5 :(得分:1)
尝试使用文件名的绝对路径。如果您使用的是Windows,请使用getlasterror()查看实际的错误消息。
答案 6 :(得分:0)
必须已将输出文件夹目录配置为IDE中的某个其他目录。您可以更改它或用整个文件路径替换文件名。
希望这有帮助。
答案 7 :(得分:0)
除了上述内容之外,您可能还有兴趣显示当前目录:
int MAX_PATH_LENGTH = 80;
char* path[MAX_PATH_LENGTH];
getcwd(path, MAX_PATH_LENGTH);
printf("Current Directory = %s", path);
这应该在gcc / glibc平台上没有问题。 (我最熟悉那种类型的平台)。有一个问题posted here讨论了getcwd
&amp; Visual Studio,如果您使用的是Windows类型的平台。