各位大虾帮帮忙,memcpy之后 得到“烫烫烫烫D” 为什么呢? char strBusID[4];memset(strBusID,0,4);char* filebuffer ="x10001192.168.100.224asdfghijklmnopqrstuvw";memcpy(strBusID,(filebuffer +2),4);于是 为什么 strBusID会得到 "0001烫烫烫烫D" 这个值呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 字符串以0结尾,你要给strBusID分配5个字节,最后一个字节放0 char strBusID[5];memset(strBusID,0,5); // 把5个字节全部清0,最关键的就是把strBusID[4]置为'\0'char* filebuffer ="x10001192.168.100.224asdfghijklmnopqrstuvw";memcpy(strBusID,(filebuffer +2),4);char s[]这样的字符串实质上是数组,它是依靠'\0'来标记字符串结尾的。如果0001之后没有'\0',他就会把后续内存里的内容取出来,直到遇到一个'\0'为止。注意区别'\0'和'0'。'\0'对应ascii的0,'0'对应ascii码的48。DEBUG模式下运行时,未初始化的变量会被系统赋初值为0xCC ,超过了ASCII码0-127这个范围,因此这个“字符串”被系统当成了宽字符组成的字符串,即两个字节数据组成一个字符,而0xCCCC表示的宽字符正好是乱码中的那个“烫”字。http://blog.csdn.net/fallinsky/archive/2010/11/19/6020412.aspx debug工程ansi模式下数组未清0. strBusID是数组,大小是4,那你就取前面4个字符就可以了,后面的不用管了! char szTime[16];memset(szTime,'\0',sizeof(szTime)); clistbox 根据情况改变字体颜色 获取mac地址的问题 z序 对指针的一个问题 在FormView里何时初始化以及释放COM组件比较合适? 高分请教一个OutLook风格的用户界面的使用问题 如何实现vc的那种目录对话框? .PS是什么东东? 关于学习语言的问题(新手)! 初学者的一个问题 【求救】mfc中向文件中写入数据老出错 如何为菜单设置自定义的颜色?如何改变菜单选项的风格?
memset(strBusID,0,5); // 把5个字节全部清0,最关键的就是把strBusID[4]置为'\0'
char* filebuffer ="x10001192.168.100.224asdfghijklmnopqrstuvw";
memcpy(strBusID,(filebuffer +2),4);char s[]这样的字符串实质上是数组,它是依靠'\0'来标记字符串结尾的。
如果0001之后没有'\0',他就会把后续内存里的内容取出来,直到遇到一个'\0'为止。
注意区别'\0'和'0'。'\0'对应ascii的0,'0'对应ascii码的48。
DEBUG模式下运行时,未初始化的变量会被系统赋初值为0xCC ,超过了ASCII码0-127这个范围,因此这个“字符串”被系统当成了宽字符组成的字符串,即两个字节数据组成一个字符,而0xCCCC表示的宽字符正好是乱码中的那个“烫”字。
http://blog.csdn.net/fallinsky/archive/2010/11/19/6020412.aspx
memset(szTime,'\0',sizeof(szTime));