我无法从我的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错误,它不会被创建。但只有一个反斜杠,文件就会被创建,如果是文本文件,我可以读取它。我稍后会在我的学校计算机上尝试使用两个反斜杠,但在此之前,有没有人看到代码的另一个问题?
答案 0 :(得分:2)
要在字符串文字中使用反斜杠
"c:\\myBinFile.bin"
<强>更新强>:
如果你只使用一个反斜杠,编译器会发出一个警告,如 * 1
无法识别的字符转义序列
或
未知逃脱序列
并忽略使文件名变为的单反斜杠:
"c:myBinFile.bin"
这是您启动程序的目录中名为"myBinFile.bin"
的文件,假设程序没有调用chmod()
来更改工作目录。
* 1至少VC10和gcc这样做。