我试图从65536字节文件中读取256字节到缓冲区,使用fopen,fread,fwrite和fseek将其视为随机访问文件 . 我没有收到任何错误,但读取后缓冲区仍为空,即使文件非空并且fread报告读取256个字节 . 这是我的代码:
FILE *file = NULL;
char buffer[255];
memset(buffer, 0, sizeof(buffer));
file = fopen("BACKING_STORE.bin","r");
if(file == NULL) {
printf("Error: can't open file.\n");
return NULL;
} // end if
if(fread(buffer, 1, 256, file) != 256) {
printf("Error: reading from file failed.\n");
return NULL;
} // end if
printf("The bytes read are [%s]\n", buffer);
fclose(file);
为了确认,我在十六进制编辑器中打开了BACKING_STORE.bin文件,以确保它不是't empty. Here'的屏幕截图:
运行此程序后,我得到输出:“读取的字节是[]”,但没有任何错误 .
我对C很新,所以我确信这只是一些我想念的简单 .
谢谢您的帮助 . :)
1 回答
因为您无法使用
"%s"
和printf()
输出二进制数据 . 如果要查看内容,可以编写循环并打印每个字节的十六进制值,如下所示