gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:24:14 29 4
gpt4 key购买 nike

我想要做的是读取“.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;
}

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

另外,我编写了clearStdin函数,如下所示:

void clearStdin(void)
{
scanf("%*[^\n]");
scanf("%*1[\n]");
return;
}

编译器没有报告任何错误,但不知何故,函数调用似乎并不完全按照我想要的方式工作。它确实清除了标准输入,但无论调用该函数,总会出现紧随其后的错误,例如提示用户输入的主菜单函数。

请帮忙!!提前致谢。

最佳答案

“输出是一堆无法阅读的垃圾” - 是的,它将会。它是一个二进制文件,并不意味着可以作为文本读取。

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

参见here寻找一种方法来做到这一点。

关于c - 使用 fread 函数读取二进制文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12067480/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com