Я не вижу, что такое fp. Я просто должен предположить, что это 'FILE * fp;'.
Я не вижу, что вы на самом деле включили , и должны предположить, что вы включили.
Я не вижу, чтобы вы на самом деле включали и объявляли 'using namespace std;', и должны предполагать, что вы это делаете.
Я не вижу, что происходит после вызова fread (), который мог бы сказать вам, если вызов был успешным.
Выполнение процесса фактического сокращения вашего неисправного кода до абсолютного, но полного минимума для воспроизведения ошибки - это первое, что вы должны сделать, когда кусок кода ошеломил вас.
Может оказаться (и обычно так), что проблема даже не там, где вы думали.
Как говорится, я бы попробовал заменить
if (fread(&x,sizeof(x),1,fp) != sizeof(x))
{
cout <<"file not read correctly";
return -1;
}
с
int i;
if ( ( i = fgetc( fp ) ) == EOF )
{
perror( "File not read correctly" );
return -1;
}
x = (char) i;
cout << "Success, read '" << x << "'." << endl;
Использование «perror ()» вместо сообщений «homebrewn cout» дает дополнительную информацию о причине любой ошибки. Использование 'fgetc ()' покажет вам, что файл действительно содержит то, что вы думаете, и что ваши проблемы не связаны с несколько необычным использованием fread () для одного байта.
Тогда доложите.