优艾设计网

过于结构体,存进char *的buff,再写入文件?

优艾设计网 https://www.uibq.com 2023-04-18 17:43 出处:网络 作者:在线设计
struct data { u_short sin_port; structin_addr sin_addr; unsigned char id; };struct data Data[141];char *buf,*buf1, buf1 = (char *)malloc(10000); memset(buf1, 0, 10000);for (i =0;i< 141;i++){ memcpy

struct data { u_short sin_port; structin_addr sin_addr; unsigned char id; };struct data Data[141];char *buf,*buf1, buf1 = (char *)malloc(10000); memset(buf1, 0, 10000);for (i =0;i< 141;i++){ memcpy(buf1, &Data[i].id,20); printf("buf11: %x", buf1); buf1+=20; memcpy(buf1, &Data[i].sin_addr, 4); buf1+=4; memcpy(buf1, &Data[i优艾设计网_设计].sin_port, 2); buf1+=2; size1 += 26;}buf1 -= size1; write(fd2, buf1, size1+1); close(fd2); free(buf1);

我发现这样写入的数据总是不对/?请教哪里有问题啊?一般都是先写入buffer,再写入文件?


甄沛文 2022-07-11 19:38

优艾设计网_设计LOGO

这是buf空间的前对应字节空间即存储了d1的值


于新洋_2020 2022-07-11 19:44

不要这么麻烦。你顶一个struct的指针,指向"buf指针强转型后的位置",然后将你要copy的struct赋值过来即可。char* buf = new char[100];struct Data d1; // init d1struct Data d2 = (struct 优艾设计网_PS论坛Data)buf;*d2 = d1;


甄沛文 优艾设计网_设计 2022-07-11 19:45

赋值前先初始化 buf = buf1 保存数据起始位置最后使用buf而不是buf1写入数据 write(fd2, buf, size1+1);buf1 -= size1 也是多余处理


139****6298 2022-07-11 19:47

……优艾设计网_Photoshop问答


吻与爱 2022-07-11 19:50

buf1是字符串类型,应该有结束符‘0’来优艾设计网_Photoshop百科收尾,否则会有乱码。


404598193 2022-07-11 19:51

1.标题“过于结构体” , 应该是“对于结构体”2.“char 优艾设计网_Photoshop交流buf, buf1,” , 最好用西文分号结束。3.内存拷贝memcpy的具体含义参考下标准手册,按你的意思,应该是这个函数第三个参数问题。


0

精彩评论

暂无评论...
验证码 换一张
取 消