c - 二进制文件中的信息无法正确显示
问题描述
我在一个二进制文件中有信息,它的格式如下(1 int,10char):“21fghjklbnv2qwertyuiop”等等。为什么我不能在文本文件中正确写入信息(名称:10char 年龄:int)?它只写一个整数,而且是错误的。我尝试改变分配内存的方式,但它使情况变得更糟
void Task2_and_3(int i, int n)
{
int *Number_Filep = (int*)malloc(sizeof(int));
char *Wordp = (char*)malloc(sizeof(char)*11);
i = 0;
FILE*f;
if ((f = fopen("Test2.bin", "rb"))==NULL)
{
printf("File cannot be opened");
exit(1);
}
if(Number_Filep == NULL)
{
free(Number_Filep);
free(Wordp);
exit(2);
}
else if(Wordp == NULL)
{
free(Number_Filep);
free(Wordp);
exit(5);
}
while(1)
{
if(feof(f))
{
break;
}
if(i>=1)
{
int* temp = Number_Filep;
char* tempw = Wordp;
Number_Filep = realloc(Number_Filep, sizeof(int));
Wordp = realloc(Wordp, 11*sizeof(char));
if(Number_Filep == NULL)
{
free(temp);
free(tempw);
printf("Error");
exit(3);
}
else if(Wordp == NULL)
{
free(temp);
free(tempw);
printf("Error");
exit(3);
}
}
fread(Number_Filep, sizeof(int), 1,f);
fread(Wordp, sizeof(char), 11 ,f);
i++;
}
fclose(f);
FILE*fp;
if ((fp = fopen("Data.txt", "w"))==NULL)
{
printf("File cannot be opened");
exit(4);
}
n=0;
/* for(n=0;n<i;n++)
{*/
fprintf(fp,"Name: %s", Wordp);
fprintf(fp,"\n");
fprintf(fp,"Age: %d", *Number_Filep);
fprintf(fp,"\n");
//}
fclose(fp);
free(Number_Filep);
free(Wordp);
}
解决方案
推荐阅读
- testng - testng 套件结果未提供正确的计数
- python - 在 Python 问题中转换为二进制字符串
- python - Python 使用 pytesseract 识别简单图像中的数字
- vlc - 在 yocto build 中运行 vlc 应用程序时出现分段错误
- groovy - 如何通过在 SOAPUI 中包含标签来提取 SOAP 请求属性的值
- swift - SKSpriteNodes 的便利初始化和分配变量值的问题
- xcode - SwiftUI 中视图主体的差异
- javascript - Couchdb 视图不适用于多个过滤器
- node.js - 使用套接字 io 和节点 js 保存在本地但不在服务器上的数据
- php - Google Authenticator 仅对最新的“用户”进行身份验证