C 使用fread函数读取二进制文件时出现问题

C 使用fread函数读取二进制文件时出现问题,c,stdin,fread,C,Stdin,Fread,我要做的是读取“.d”二进制文件的内容并将其存储在数组中。 所以我写了以下代码: void viewFile() { unsigned char inFileData[SIZE]; char fileName[SIZE]; int numRead; FILE *inBinFile; printf("Enter the file name:"); scanf("%s", fileName); inBinFile = fopen( fileNa

我要做的是读取“.d”二进制文件的内容并将其存储在数组中。 所以我写了以下代码:

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;
}

输出是一堆无法读取的垃圾。我做错了哪一部分?我不明白

此外,我还编写了ClearstIn函数,如下所示:

void clearStdin(void)
{
    scanf("%*[^\n]");
    scanf("%*1[\n]");
   return;
}
编译器没有报告任何错误,但不知何故,函数调用似乎并没有完全按照我想要的方式工作。它确实清除了stdin,但在调用该函数的任何地方都会出现错误,例如,提示用户输入的主菜单函数

请帮忙!!提前感谢。

“输出是一堆无法阅读的垃圾”-是的,会的。它是一个二进制文件,不能作为文本阅读

如果您想看到可读形式的二进制信息,可以考虑对其进行十六进制转储


请参阅以了解执行此操作的方法。

除非二进制文件的内容是一组可读的ASCII字符,否则使用
%s
printf()
格式将内容发送到
stdout
通常会导致一堆无法读取的垃圾。文件中到底有什么?你还期待什么?你说自己的文件是二进制的,那么为什么它会产生可读的输出?有什么理由你打开文件两次吗?Micheal,实际内容只是0 1 2 3 4 5 6 7 8 9。这就是我困惑的地方。。谢谢数学家1975设计说明书上说内容是01 2 3 4 5 6 7 8 9,所以我想把它打印出来。。。很抱歉没有说清楚,谢谢!