void Test()
{
int nNum = 30;
int nnn = 40;
char sz[2];
strcpy(sz, "1234567890/0");
int mm = nNum;
}
在程序调用strcpy后,可以发现nNum 和nnn 变成了一个其它的值.但当strcpy的目的字符串的大小不小于源字符串时,nNum 和nnn的值不改变.原因可能如下:
当strcpy拷贝字符串时,并不能根据目的字符串的大小控制其要拷贝的长度,而是以目的字符串的首地址向上依次将字符拷贝到其中,而nNum,nnn的地址在其范围内,所以对其值进行了改写.
改变方法:1.使目的字符串的大下不小于源字符串.
2. 将目的字符传声明在所有临时变量之前.
3.将目的字符串使用堆地址空间既用new 或malloc动态分配;
说明:上述只是个人理解,不一定正确.