首页 > 解决方案 > 为什么二进制文件的内容没有在c中打印?

问题描述

您好我正在编写一个程序,它读取二进制文件的内容并将它们打印到屏幕上。

  #include <stdio.h> 
 #include <stdlib.h> // For exit() 

 int main() 
 { 
FILE *fptr; 

char filename[100];


printf("Enter the filename to open \n"); 
scanf("%s", filename); 

// Open file 
fptr = fopen(filename, "rb"); 
if (fptr == NULL) 
{ 
    printf("Cannot open file \n"); 
    exit(0); 
} 

// Read contents from file
fseek(fptr,0L,SEEK_END); 
int fsize = ftell(fptr);
fseek(fptr,0L,SEEK_SET); 
unsigned char  *c = malloc(fsize);
fread(c,fsize,1,fptr); 
fclose(fptr); 
printf("%s",c);

return 0; 
}

但它不打印任何东西。有人可以解释我为什么以及如何解决这个问题。

标签: c

解决方案


你所尝试的根本不是你想要达到的。

记住printf() 格式化打印的数据。要使用格式正确打印%s,二进制数据值必须是ASCII 值,但当然,它们不是.

您可能应该尝试printf() 使用%d.


推荐阅读