我的二进制文件没有填充或我无法从中读取

时间:2014-02-10 17:24:38

标签: c

我无法从我的bin文件中读取...屏幕显示没有任何内容,就好像它什么都没有。 在尝试阅读时我做错了吗?

#include <stdio.h>
#include <stdlib.h>
#include  <io.h>
#include <ctype.h>
#define pause system("pause")
#define cls system("cls")
#define COLS 10
#define ROWS 500
void displayTheResult(float a[][COLS], int c){
        int i,j;
        FILE *myBinFile;


        myBinFile = fopen("c:\myBinFile.bin","rb");
         if(myBinFile == NULL){
             printf("ERROR Reading from Bin file\n");
              printf("My computer uses 1 slash after c: \n if your computer uses 2         slashes please change all the \nfopen function accordingly in the displayTheResults() function");
             pause;
             exit(-1);
        }//END if
         fread(a,sizeof(float)*COLS, c,myBinFile);
         fclose(myBinFile);
}

当我写信给我时,我做错了什么? 最初,我得到错误,因为我的老师教我使用“ba”,然后我通过谷歌发现它实际上是“ab”。

我想知道其他类似的事情是否出错。我很确定这正是我教授教我的方式。

我想知道它是什么。我做错误检查所以很难相信BIN只是NULL

if( (_access( "c:\myBinFile.bin", 0 ))!= -1 )
   {
       printf("BIN EXISTS");
       pause;
    myBinFile = fopen("c:\myBinFile.bin","ab");
     if(myBinFile == NULL){
         printf("ERROR appending to bin File\n");
          printf("My computer uses 1 slash after c: \n if your computer uses 2 slashes please change the \nfopen function accordingly in the displayTheResults() function");
         pause;
         exit(-1);
    }//END if
     fwrite (a,sizeof(float)*COLS, c,myBinFile);
     fclose(myBinFile);

     }//end if
     else
         {
             printf("BIN NO EXISTS :(");
     myBinFile = fopen("c:\myBinFile.bin","wb");
     if(myBinFile == NULL){
         printf("ERROR Creating new  Bin File\n");
          printf(" My computer uses 1 slash after c: \n if your computer uses 2 slashes please change the \nfopen function accordingly in the displayTheResults() function");
         pause;
         exit(-1);
    }//END if
     fwrite (a,sizeof(float)*COLS, c,myBinFile);
     fclose(myBinFile);
     }//end else

或两者兼而有之?

你们要相信我。两个反斜杠在我的计算机上不起作用。我认为我的Visual Studio会自动修复它,但无论出于何种原因,其他计算机上都需要两个反斜杠,而 我的计算机上有一个反斜杠。有两个blackslashes我总是得到null错误,它不会被创建。但只有一个反斜杠,文件就会被创建,如果是文本文件,我可以读取它。我稍后会在我的学校计算机上尝试使用两个反斜杠,但在此之前,有没有人看到代码的另一个问题?

1 个答案:

答案 0 :(得分:2)

要在字符串文字中使用反斜杠

"c:\\myBinFile.bin"

<强>更新

如果你只使用一个反斜杠,编译器会发出一个警告,如 * 1

  

无法识别的字符转义序列

  

未知逃脱序列

并忽略使文件名变为的单反斜杠:

"c:myBinFile.bin"

这是您启动程序的目录中名为"myBinFile.bin"的文件,假设程序没有调用chmod()来更改工作目录。

* 1至少VC10和gcc这样做。