我放在与代码相同的文件夹中的原始文件但是fopen()没有打开文件而是提供文件错误。 这是代码
char strInputFile[] = "test.raw";
pFile = fopen(strInputFile, "rb");
if (pFile == NULL) {
fputs("File error", stderr);
cout << " press any key to exit";
cout << _getch();
exit(1);
}
代码给我的pFile值为null。
答案 0 :(得分:1)
我在这里做了一些假设,但我认为问题是.raw文件需要与运行可执行文件位于同一目录中,而不是代码所在的目录。
操作系统对源项目的构建方式一无所知,只知道它是否被要求打开一个名为test.raw
的文件,并且没有给出任何其他信息,假设它在当前目录。
正如评论所述,您应该检查errno(使用perror打印它)以确定失败原因。您还可以尝试在代码中的同一点创建一个文件,称为HEREIAM.TXT,然后搜索该文件,以查找打开调用实际查找文件的位置。
答案 1 :(得分:1)
正如评论中所建议的,使用perror来检查错误
#include <stdio.h>
#include <iostream>
using namespace std;
int main() {
char strInputFile[] = "test.raw";
FILE* pFile = fopen(strInputFile, "rb");
if (pFile == NULL) {
char buf[200] = {0};
perror(buf);
fputs("File error", stderr);
cout << " press any key to exit";
cout << getchar();
exit(1);
}
}
我明白了:
“没有这样的文件或目录”
在我的情况下,如果我在工作目录中没有test.raw文件。