社区
C语言
帖子详情
C读取二进制文件的问题
kevin202121
2011-06-17 12:59:24
生成了二进制文件,如何利用C实现读这个二进制文件,并将其内容print出来,看看和写的信息是否一致。
使用fread函数吗?望君指点。
...全文
198
16
打赏
收藏
C读取二进制文件的问题
生成了二进制文件,如何利用C实现读这个二进制文件,并将其内容print出来,看看和写的信息是否一致。 使用fread函数吗?望君指点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kevin202121
2011-06-20
打赏
举报
回复
结构修改下,ip 应该是 unsigned int 值,不是指针
typedef struct recv_data
{
uint32_t ip;
uint16_t port;
void *ptr;
uint16_t data_size;
char buff[4096];
} recv_data_t;
代码该怎么改?
AnYidan
2011-06-18
打赏
举报
回复
当然可以,c 中所有的文件操作都可以操作 txt 和 binary 文件,函数的具体使用网上有
一只牛_007
2011-06-18
打赏
举报
回复
read也行
一只牛_007
2011-06-18
打赏
举报
回复
fread就行了吧
studiovc
2011-06-18
打赏
举报
回复
typedef struct recv_data
{
unsigned int *ip;
unsigned short port; //socket port
void *ptr;
unsigned short data_size;
char *buff;
} rbuff;
fp=open("wf.dat",0)
read(fp,rbuff,sizeof(rbuff));
printf("ip=%s",rbuff.ip);
printf("buff=%s",rbuff.buff);
//......继续输出其他字段
reckhou
2011-06-17
打赏
举报
回复
fp = fopen("wf.dat","rb");
rb改成rb+试试看
kevin202121
2011-06-17
打赏
举报
回复
[Quote=引用 7 楼 q191201771 的回复:]
引用 6 楼 kevin202121 的回复:
引用 5 楼 q191201771 的回复:
你这里是把结构体内的元素一个一个写入文件的
你用fread再一个一个读出来就行了
记得用"rb" 二进制形式打开文件读
用fread读出来后,直接printf就可以吗?
可以的~~
[/Quote]
二进制文件内容应包括如下:
192.168.100.1 test message, 1234567890! 9876
可是我把代码改完后,只输出了IP地址和端口号,其他的信息没有输出,而输出的是9876及774910001。是什么原因?
代码有什么问题吗,如下所示:
fp = fopen("wf.dat","rb");
fread (&data,sizeof(data.buff),1,fp);
printf("%s\n",data.buff);
fread (&data,sizeof(data.data_size),1,fp);
printf("%d\n",data.data_size);
fread (&data,sizeof(data.port),1,fp);
printf("%d\n",data.port);
fread (&data,sizeof(data.ip),1,fp);
printf("%d\n",data.ip);
fclose(fp);
赵4老师
2011-06-17
打赏
举报
回复
推荐使用WinHex软件查看文件原始字节内容。
wangsifu2009
2011-06-17
打赏
举报
回复
hoho~~~
就想叫yoko
2011-06-17
打赏
举报
回复
[Quote=引用 6 楼 kevin202121 的回复:]
引用 5 楼 q191201771 的回复:
你这里是把结构体内的元素一个一个写入文件的
你用fread再一个一个读出来就行了
记得用"rb" 二进制形式打开文件读
用fread读出来后,直接printf就可以吗?
[/Quote]可以的~~
kevin202121
2011-06-17
打赏
举报
回复
[Quote=引用 5 楼 q191201771 的回复:]
你这里是把结构体内的元素一个一个写入文件的
你用fread再一个一个读出来就行了
记得用"rb" 二进制形式打开文件读
[/Quote]
用fread读出来后,直接printf就可以吗?
就想叫yoko
2011-06-17
打赏
举报
回复
你这里是把结构体内的元素一个一个写入文件的
你用fread再一个一个读出来就行了
记得用"rb" 二进制形式打开文件读
kevin202121
2011-06-17
打赏
举报
回复
[Quote=引用 1 楼 q191201771 的回复:]
你把你写文件的代码贴出来~~
fread可以读的 也可以通过其他函数读
[/Quote]
改怎么读,代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct recv_data
{
unsigned int *ip;
unsigned short port; //socket port
void *ptr;
unsigned short data_size;
char *buff;
} recv_data_t;
int main (int argc, char **argv)
{
FILE *fp;
recv_data_t data;
memset(&data, 0, sizeof(data));
data.ip=(unsigned int *) malloc (sizeof(unsigned int) *sizeof("192.168.100.1"));
memcpy(data.ip,"192.168.100.1",sizeof("192.168.100.1"));
data.port = 9876;
data.data_size=strlen("text message, 1234567890!");
data.buff=(char *) malloc (4096 *sizeof(char));
strcpy(data.buff, "test message, 1234567890!");
data.data_size = strlen(data.buff);
data.ptr = NULL;
fp = fopen ("wf.dat", "wb");
if (fp == NULL)
{
printf ("open file fail\n");
return -1;
}
fwrite (data.ip,data.data_size,1,fp);
fwrite (&(data.port), sizeof(data.port), 1, fp);
fwrite (&(data.data_size), sizeof(data.data_size), 1, fp);
fwrite (data.buff, data.data_size, 1, fp);
fclose(fp);
free(data.buff);
return 0;
}
bdmh
2011-06-17
打赏
举报
回复
fread可以
fengzhw
2011-06-17
打赏
举报
回复
简单些可以用fgetc,逐个打印成16进制,每20个字节换行.
用fread你要考虑末尾读入的块可能字节不够,不过用来调试也没啥.
就想叫yoko
2011-06-17
打赏
举报
回复
你把你写文件的代码贴出来~~
fread可以读的 也可以通过其他函数读
linux c 读写
二进制
文件
main2.cpp 生成1个
二进制
文件
。 main3.c
读取
二进制
文件
。 用fgets可以
读取
指定长度的字符串。 可用于
读取
格式化固定位址的
二进制
结构数据。
MFC
读取
二进制
文件
并保存为文本
文件
1:本程序
读取
二进制
文件
,并把读到的
二进制
文件
保存为文本数据 2:
二进制
文件
内容一系列的三维点云数据,由扫描仪器扫描获得 3:本程序采用了多线程技术,
读取
二进制
文件
时,界面不会卡顿 4:实例
二进制
文件
为data....
掰开揉碎『看漫画学Python』下
12.3 读写文本
文件
12.4 动动手 —— 复制文本
文件
12.5 读写
二进制
文件
12.6 动动手 —— 复制
二进制
文件
12.1 练一练 第13章 图形用户界面 13.1 Python中的图形用户界面开发库 13.2 安装wxPython178 13.3 第一个...
C语言fseek、fread、fwrite读写
二进制
文件
C语言读写
二进制
文件
的使用
c语言中
二进制
与文本打开
文件
的区别
我看了很多,只有这个一针见血,读后感就觉很清晰,不会更加迷惑
C语言
69,382
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章