我想要做的是读取'.d'二进制文件的内容并将它们存储在数组中。 所以我写了下面的代码:使用fread函数读取二进制文件的问题
void viewFile()
{
unsigned char inFileData[SIZE];
char fileName[SIZE];
int numRead;
FILE *inBinFile;
printf("Enter the file name:");
scanf("%s", fileName);
inBinFile = fopen(fileName, "rb");
if((inBinFile = fopen(fileName, "rb")) == NULL)
{
fprintf(stderr, "Error opening %s\n", fileName);
clearStdin();/*a function to clear stdin*/
mainMenu();/*a function to prompt user input*/
}
numRead = fread(inFileData, sizeof(unsigned char), SIZE, inBinFile);
inFileData[SIZE] = '\0';
printf("U coded data:\n%s\n", inFileData);
printf("%d\n", numRead);
fclose(inBinFile);
return;
}
输出是垃圾的不可读一堆。我做错了哪一部分?我不明白。
也,我下面写我clearStdin功能:
void clearStdin(void)
{
scanf("%*[^\n]");
scanf("%*1[\n]");
return;
}
编译报道没有错误,但不知何故,函数调用似乎并没有工作,正是我想要的方式。它确实清除了标准输入,但是在调用这个函数的地方总会出现错误,例如提示用户输入的mainmenu函数。
请帮忙!!提前致谢。
除非二进制文件的内容是一个可读的ASCII字符集,否则通过'%s'' printf()'格式将内容发送到'stdout'通常会导致一堆垃圾不可读。文件中实际是什么? –
你还会期望什么 - 你自己说这个文件是二进制的,为什么它会产生可读的输出? – mathematician1975
是否有你打开文件两次的原因? –