strcpy函数

[复制链接]
查看11 | 回复1 | 2010-4-8 01:30:30 | 显示全部楼层 |阅读模式
楼主你好!这段话其实说的很明白了,下面我说详细一些吧。如果在复制前,没有对str1数组赋值,那么,它保存的是10个随机的字符,复制时将str2中的与'\0'一起复制的时候,把"china"串中的这5个字符,从str1[0]开始,充掉(即覆盖)原str1里面的前五个字符,因为str2中有5个字符,那么,还有一个'\0'会充掉str1中第6个字符。剩下了4个没充掉,原来的后4个还保持原样,因为根据str2的声明,未显式指定大小,但根据赋值,就知道它的大小等于6(第6个为'\0'),所以复制的时候,只充掉了前6个位置。如果,显式指定为:str2[10] = {"china"};那就要注意了,str2后面还有四位都是'\0',如果是这样,复制以后str1的后四位全是'\0'希望对你有帮助,谢谢!
回复

使用道具 举报

千问 | 2010-4-8 01:30:30 | 显示全部楼层
char str1[10];这个str1应该是个局部变量吧,对于局部变量如果声明时不进行初始化,则这个变量的值是不确定的,局部数组也一样。如果str1是全局变量,或者声明了static,则变量的值初始时自动都清为零所以strcpy复制字符串时,只会把源字符串的字符复制到目标字符串的相应位置,然后在字符串后面添加一个结束字符'\0',剩下的部分strcpy是不管的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行