jet*_*jet 9 c file-io fopen stdio
我一直在尝试打开文件和输出文本,但我一直在收到错误.所以我想我会从一开始就尝试打开文件.这是我的代码:
#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);
}
Run Code Online (Sandbox Code Playgroud)
当我运行该文件时,"错误"被打印到控制台,就是这样.TestFile1.txt与我的.exe位于同一位置.我该如何解决?
小智 21
而不是printf("Error");,您应该尝试perror("Error")哪些可能会打印失败的实际原因(如权限问题,无效参数等).
pax*_*blo 11
你是如何运行该文件的?是来自命令行还是来自IDE?您的可执行文件所在的目录不一定是您的工作目录.
尝试使用中的完整路径名称fopen,看看是否修复了它.如果是这样,则问题如上所述.
例如:
file = fopen("c:\\MyDirectory\\TestFile1.txt", "r");
file = fopen("/full/path/to/TestFile1.txt", "r");
Run Code Online (Sandbox Code Playgroud)
或者打开命令窗口并导航到可执行文件所在的目录,然后手动运行它.
顺便说一下,你可以插入一个简单的(分别用于Windows或Linux/UNIX/BSD/etc):
system ("cd")
system("pwd")
Run Code Online (Sandbox Code Playgroud)
在fopen显示您实际所在的目录之前.
小智 5
一点点错误检查有很长的路要走 - 您可以随时测试errno的值或调用perror()或strerror()以获取有关fopen()调用失败原因的更多信息.
否则,关于检查路径的建议可能是正确的...很可能您不在您认为来自IDE的目录中,并且没有您期望的权限.
好吧,现在您知道存在问题,下一步是弄清楚错误到底是什么,编译并运行它时会发生什么?:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *file;
file = fopen("TestFile1.txt", "r");
if (file == NULL) {
perror("Error");
} else {
fclose(file);
}
}
Run Code Online (Sandbox Code Playgroud)