2015-02-18 4 views
-1

необработанный файл, который я разместил в той же папке, что и в коде, но fopen() не открывает файл, а указывает на ошибку файла. здесь кодНе удается прочитать .raw-файл

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 как нуль.

+1

Как вы компилируете и запускаете код? – immibis

+1

Вы пытались использовать 'perror()', чтобы получить причину неудачи 'fopen()'? –

+1

Относительный путь к файлу. – sashoalm

ответ

1

Я делаю некоторые предположения, но я думаю, что проблема в том, что .raw файл должен находиться в том же каталоге, что вы запускаете исполняемый файл, а не из той же директории, что код в.

OS ничего не знает о компоновке того, как строится ваш исходный проект, все, что ему известно, было предложено открыть файл с именем test.raw и не указав никакой другой информации, предполагает, что он находится в текущем каталоге.

Как было указано, вы должны проверить errno (использовать perror для его печати), чтобы установить причину сбоя. Вы также можете проверить, пытаясь создать файл в той же точке кода, который называется say HEREIAM.TXT, а затем искать этот файл, чтобы найти, где открытый вызов действительно ищет файлы.

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 в рабочем каталоге.

Смежные вопросы