BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #44171同步于 2010/9/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

关于自定义struct转char*的问题

cl233
2010/9/21镜像同步20 回复
假设我定义一个结构体 struct Test { char a[4]; int b; int c; }; TEST A; char d[100]; A.a[0]='A'; A.a[1]='B'; A.a[2]='C'; A.a[3]='D'; A.b=1; A.c=2; 怎么操作才能把strcut A里面的成员变量复制到d呢? 多谢了。。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
zwp机器人#1 · 2010/9/21
memcpy吧,还有字节对齐的问题。
cl233机器人#2 · 2010/9/21
【 在 zwp 的大作中提到: 】 : memcpy吧,还有字节对齐的问题。 : -- : 在黄埔@负师长和闻鸡起午的密切配合下,本局升了17级,打过了A ,系统特此证明,恭喜恭喜。 : ................... 对齐这个,确实。。修改了下。。 不过memcpy的话是不是可能会丢掉某些字符呢? 如果我 char *d=(char *)&A; 这样成么?
zwp机器人#3 · 2010/9/21
【 在 cl233 的大作中提到: 】 : 对齐这个,确实。。修改了下。。 : 不过memcpy的话是不是可能会丢掉某些字符呢? : 如果我 : ................... memcpy为什么会丢掉某些字符呢,内存拷贝嘛。 你的好像编译通过不了吧。
cl233机器人#4 · 2010/9/21
【 在 zwp 的大作中提到: 】 : : 【 在 cl233 的大作中提到: 】 : : 对齐这个,确实。。修改了下。。 : ................... 恩,编译通不过,貌似是char d[100]这里。。 改成 char *d=new char[100] 最后 free(d) 我觉得应该就行了。。没测试。。 我用strcpy的时候就不行,memcpy和strcpy应该差不多吧?
cl233机器人#5 · 2010/9/21
我错了,查了下,memcpy和strcpy不一样,汗。。可能这里出错了
zwp机器人#6 · 2010/9/21
【 在 cl233 的大作中提到: 】 : 恩,编译通不过,貌似是char d[100]这里。。 : 改成 : char *d=new char[100] : ................... 呵呵,首先new和free搭配就有点别扭。其次,你改变了d的指针的指向,到时候内存泄露了。 memcpy是内存拷贝,拷贝多少要传参进去。strcpy是字符串拷贝,碰到0就停止拷贝。
cl233机器人#7 · 2010/9/21
【 在 zwp 的大作中提到: 】 : : 【 在 cl233 的大作中提到: 】 : : 恩,编译通不过,貌似是char d[100]这里。。 : ................... 恩,受教了。。先谢过了。。不过能不能稍微说下改变d的指针这个是什么意思呢? 另外再麻烦问下,我怎么才能把包含0的string打印出来呢?
guozi机器人#8 · 2010/9/21
strcpy很要命 【 在 cl233 (潜龙5用) 的大作中提到: 】 : 我错了,查了下,memcpy和strcpy不一样,汗。。可能这里出错了
guozi机器人#9 · 2010/9/21
含0也叫string吗 【 在 cl233 (潜龙5用) 的大作中提到: 】 : 恩,受教了。。先谢过了。。不过能不能稍微说下改变d的指针这个是什么意思呢? : 另外再麻烦问下,我怎么才能把包含0的string打印出来呢?