|
|
发表于 2012-4-24 16:25:22
|
显示全部楼层
若梦花开 发表于 2012-4-24 13:57
哦,懂咯,谢谢。。
这个问题我解释下吧!
其实我刚学习C语言的时候也碰到过这个问题,但后来自己调试加上查书还是解决了。
strcpy和strcnpy都是用来复制字符串的。
但是为什么strcnpy会出现很多“烫”乱码呢?而strcpy却不会?
关键的问题出现在这里。
首先strncpy(str1,str2,2);是把str2的前两个字符赋值给str1;
而strcpy(str1,str2,2);是把str2的整个字符串赋值给str1,但是必须strcpy足够大,能够容纳得下str2,否则会出错。
之所以strncpy(str1,str2,2);printf("%s",str1);会出现乱码,是因为str1没有字符串结束字符‘\0’,但是如果在最后加上一个字符串结束字符strncpy(str1,str2,2);str1[2] = '\0';就不会出现乱码了。
而strcpy(str1,str2,2);把str2的整个字符串赋值给str1包括结束字符'\0'。
'\0'这是区别字符串与字符数组的唯一区别,就像int a[40] = {1,2,3,4,5,6,7,8,9};这个数组a,你不可以用;printf("%s",a);输出一样,否则就会有乱码产生。
|
|