读书人

strcpy有关问题 急救!

发布时间: 2012-02-16 21:30:36 作者: rapoo

strcpy问题 急救!!!
.h文件
char user[7];
char name[8];

.cpp文件
char *cr = "abcdefg ";
char *cc = "12345678 ";
strcpy(user, cr);
strcpy(name, cc);

为什么弹出效果是:
MessageBox(user); // abcdefg12345678
MessageBox(cr); // abcdefg
MessageBox(name); // 12345678
MessageBox(cc); // 12345678

user后面为什么添加了cc的内容???

[解决办法]
char user[7];
char name[8];

空间预留少1

你的编译器中user和name是连续内存分配了吧/。
[解决办法]
你的 user[7]只能放下abcdefg 还有一个\0放不进去了
所以 user指向的字符串为abcdefg12345678\0

解决办法: 数组定义为

char user[8]; char name[9]
[解决办法]
空间是连续的,字符串没有以\0结束
[解决办法]
我如果char user[7] 改成8的话
那么最后所有字符相加时这个user是占7位还是8位啊??
///////////

你要明白一个这么一回事,strlen(user)=7,sizeof(user)=8.一个是有效字符长度,一个是所占内存空间,是由些细微区别的

读书人网 >C++

热点推荐