无法读取.raw文件

时间:2015-02-18 07:05:50

标签: c++ fopen

我放在与代码相同的文件夹中的原始文件但是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。

2 个答案:

答案 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文件。