吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1233|回复: 7
收起左侧

[求助] 求大神帮忙解决二进制文件读取数据不对的问题

[复制链接]
yuxuangaopeng 发表于 2021-11-8 14:29
125吾爱币
最近在练习二进制文件的读写操作,但是在练习过程中出现了一些困惑,比如我在读取19.day文件时()见附件,解出来的数据与实际数据不一样
我写的代码如下
void main()
{
        void *p = malloc(4000);
        printf("%p\n", p);
        FILE *pf = fopen("C:\\Users\\peng\\Desktop\\SH\\19.day", "rb");
        int num =fread(p, 4, 1000, pf);
        printf("fread return=%d", num);
        fclose(pf);
        system("pause");
}
原来的文件全称为19.day,但是.day传不了附件,所以就改为.txt了
2.png
1.png

19.txt

46.88 KB, 下载次数: 9, 下载积分: 吾爱币 -1 CB

最佳答案

查看完整内容

你读的其实没有问题, 只是他按浮点型显示, 你按整型显示, 实际内容都是一样的

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ryosga 发表于 2021-11-8 14:29
你读的其实没有问题, 只是他按浮点型显示, 你按整型显示, 实际内容都是一样的
1.png
woflant 发表于 2021-11-8 15:42
读出来是一样的结果,估计是文件整错了

[C++] 纯文本查看 复制代码
#include <iostream>

typedef struct _TestStruct
{
	int num1;
	int num2;
	int num3;
	int num4;
	int num5;
	int num6;
	int num7;
	int num8;
	void showInfo()
	{
		printf("%10d\t%8d\t%8d\t%8d\t%8d\t%12d\t%8d\t%8d\n",num1,num2,num3,num4,num5,num6,num7,num8);
	}
}TestStruct,*PTestStruct;


int main()
{
	FILE* fs;
	fopen_s(&fs,"C:\\Users\\LENOVO-DESKTOP\\Desktop\\19.txt","rb");
	if (fs==NULL)
	{
		printf("文件打开失败!");
		system("pause");
		return 0;
	}
	PTestStruct pts=(PTestStruct)malloc(sizeof(TestStruct));
	for (int i=0;i<1000;i++)
	{
		fread(pts,sizeof(TestStruct),1,fs);
		pts->showInfo();
	}
	if (pts!=NULL)
	{
		free(pts);
	}
	fclose(fs);
	system("pause");
	return 0;
}


readTest.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yuxuangaopeng + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| yuxuangaopeng 发表于 2021-11-10 21:51
本帖最后由 yuxuangaopeng 于 2021-11-10 21:57 编辑
woflant 发表于 2021-11-8 15:42
读出来是一样的结果,估计是文件整错了

[mw_shl_code=cpp,true]#include

文件没有整错,我问过那个大神朋友,他是用PyThon语言解析的,他只是简单截屏了部分代码给我,我仔细看了一下代码没啥出奇之处,但是就是解出来了,我很郁闷,我见他用的数据类型也是int类型!
 楼主| yuxuangaopeng 发表于 2021-11-12 16:58
woflant 发表于 2021-11-8 15:42
读出来是一样的结果,估计是文件整错了

[mw_shl_code=cpp,true]#include

谢谢这位仁兄,我原本想的是如果没人解答,悬赏就给你了,祝你开心
 楼主| yuxuangaopeng 发表于 2021-11-12 16:59
ryosga 发表于 2021-11-8 14:29
你读的其实没有问题, 只是他按浮点型显示, 你按整型显示, 实际内容都是一样的

谢谢大神,帮我解决了一半问题,但是我用强转结果还是一样,有没有其它比较好的解决办法,请教您一下。
ryosga 发表于 2021-11-12 21:36
只读取了第一行

[C++] 纯文本查看 复制代码
#include <cstdio>

struct Data
{
	int		v1;
	int		v2;
	int		v3;
	int		v4;
	int		v5;
	float	v6;
	int		v7;
	int		v8;
};

int main()
{
	FILE* fp = fopen("d:\\19.txt", "rb");
	if (fp)
	{
		Data data = { 0 };
		fread(&data, sizeof(data), 1, fp);
		printf("%d, %.2f, %.2f, %.2f, %.2f, %.2f, %d, %d",
			data.v1,
			data.v2 / 100.f,
			data.v3 / 100.f,
			data.v4 / 100.f,
			data.v5 / 100.f,
			data.v6,
			data.v7,
			data.v8);
	}
	
	getchar();

	return 0;
}
0.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yuxuangaopeng + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| yuxuangaopeng 发表于 2021-11-13 10:14
本帖最后由 yuxuangaopeng 于 2021-11-13 10:17 编辑
ryosga 发表于 2021-11-12 21:36
只读取了第一行

[mw_shl_code=cpp,true]#include

非常非常感谢!代码质量度蛮高的。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 21:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表