请教一个基础问题,关于结构体的。。。急等!! struct InfoTime{ char year[4]; char month[2]; char day[2];};CString str = _T("20121221");如何使str的字符串,赋值到结构体中InfoTime time;使得 time.year = "2012"; time.month = "12"; time.day = "21";求思路 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CString str = _T("20121221");InfoTime time;memcpy(time.year, T2A(str.Left(4)), 4);memcpy(time.year, T2A(str.Mid(4,2)), 2);memcpy(time.year, T2A(str,Right(2)), 2);如果定义为struct InfoTime{ char year[4 + 1]; char month[2 + 1]; char day[2 + 1];};则memcpy改为strcpy 直接 memcpy((void*)&time, str.GetBuffer(0), 8);就行了不过你这个结构体设计的有问题 应该设计成struct InfoTime{ char year[5]; char month[3]; char day[3];};不然你输出time.year由于找不到/0结束符会越界。不过这样就没法直接赋值了 哦,在T2A前要加USES_CONVERSION; memcpy((void*)&time, str.GetBuffer(0), 8);这个这样拷贝不行吧。。我这里不能实现 struct InfoTime{ char year[4]; char month[2]; char day[2];};如果mencpy 做上面的结构copy 是可以把内容给拷贝进去,但是取值的话,因为没有\0这取值,会出现很大问题,取的不是自己想要的值,应该怎么取值。。假设。year,只能取前4位值是正确的应该如何取值?? 假设。year,只能取前4位值是正确的应该如何取值??在memcpy到一个char year1[5]中,并把最后一位设为\0 实际应用建议你这样定义结构typedef struct tagIT { char year[4]; char rev1; //作为字串结尾 char month[2]; char rev2; //作为字串结尾 char day[2]; char rev3; //作为字串结尾}InfoTime; 赋值可以这样InfoTime time;char *str = "20121221";sscanf(str,"%4s%2s%2s",time.year,time.month,time.day);time.rev1=time.rev2=time.rev3=0; char *str = "20121221";改成CString str = _T("20121221")也可以 2012散分啦,超音速启动工具 升级了 菜鸟问题 菜单弹出窗口 如何高亮显示线段的两个端点? 视频图象匹配问题,高手看过来 有关COM端口的读写 SSL,help me?? cdatagrid 问题 急救 高手帮忙看看这段代码什么意思??? 把文本内容放到edit控件有哪些方便的方法? 改变墙纸后刷新屏幕 数据采集高手请进 用vc求高维向量间的欧式距离和卡方距离
InfoTime time;
memcpy(time.year, T2A(str.Left(4)), 4);
memcpy(time.year, T2A(str.Mid(4,2)), 2);
memcpy(time.year, T2A(str,Right(2)), 2);如果定义为
struct InfoTime
{
char year[4 + 1];
char month[2 + 1];
char day[2 + 1];
};
则memcpy改为strcpy
不过你这个结构体设计的有问题 应该设计成
struct InfoTime
{
char year[5];
char month[3];
char day[3];
};
不然你输出time.year由于找不到/0结束符会越界。
不过这样就没法直接赋值了
memcpy((void*)&time, str.GetBuffer(0), 8);这个这样拷贝不行吧。。我这里不能实现
{
char year[4];
char month[2];
char day[2];
};如果mencpy 做上面的结构copy 是可以把内容给拷贝进去,但是取值的话,因为没有\0这取值,会出现很大问题,取的不是自己想要的值,应该怎么取值。。假设。year,只能取前4位值是正确的应该如何取值??
{
char year[4];
char rev1; //作为字串结尾
char month[2];
char rev2; //作为字串结尾
char day[2];
char rev3; //作为字串结尾
}InfoTime;
赋值可以这样
InfoTime time;
char *str = "20121221";sscanf(str,"%4s%2s%2s",time.year,time.month,time.day);
time.rev1=time.rev2=time.rev3=0;
改成
CString str = _T("20121221")
也可以