c - 为什么二进制文件的内容没有在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;
}
但它不打印任何东西。有人可以解释我为什么以及如何解决这个问题。
解决方案
你所尝试的根本不是你想要达到的。
记住printf()
格式化它打印的数据。要使用格式正确打印%s
,二进制数据值必须是ASCII 值,但当然,它们不是.
您可能应该尝试printf()
使用%d
.
推荐阅读
- testing - 我们可以在 browserStack 上运行/测试桌面应用程序吗?
- unicode - CFF 字体文件中的编码和字符集表是如何组织的?
- java - Java、LeetCode 和 Nulls:Leetcode 编译器如何处理空值?
- node.js - 在 aws ec2 实例上部署 nodejs 应用程序的最佳实践
- android - 为什么设置 G_DEBUG = fatal-warnings 不会导致使用 GLib 的应用在 Android 上中止?
- jquery - Ajax url的动态IP地址替换
- azure - Azure AD B2C 中每个应用程序的最大重定向 URI 数?
- python - ValueError:未能找到可以处理输入的数据适配器:
, 在 keras 模型中预测 - reactjs - 如何使用 setTimeout 监控长时间运行的函数的进度
- swift - 使用 NSPredicate SUBQUERY 过滤 coredata 中的嵌套对象