strcpy函数问题

书上说,在使用strcpy函数的时候,将字符串2复制到字符串1中,如果字符数组str1[10]里面有3个字符,那将字符串2中的字符复制进去,是对str[10]里面原先的字符是进行覆盖还是怎样操作?

总体来说这个代码是可以编译通过并运行的,但是却不一定是每次运行的效果都相同的甚至有可能出错(segmentfault),也就是说,可移植性不太好。

在菜鸟教程的c编译器上运行正常,和楼主所说一致。

而在onlineGDB网站的在线C编译器上SegmentFault了。

分析如下,不同的编译器,不同的运行和实现环境,都会影响C语言程序的运行,程序里没有声明的或者不明确地声明的东西,是不具备良好可移植性的:因为它在A体系中可能是多余的可以利用的,但是在B体系中却有可能是必需的,不可变更的,(例如该部分内存/文件需要访问者/运行程序拥有更高的权限才能访问)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-05-25
是覆盖操作。只是将2中的字符覆盖1中的,1中其他的不变。
如:str1[]="look here";str2[]="plus";
strcpy(str1,str2);
复制之后:str1[]={'p','l','u','s','\0','h','e','r','r','\0'};本回答被提问者采纳
第2个回答  2008-05-25
复制替换,用str2字符串替换str1中从0开始到strlen(str2)-1长度的字符串。可以指定替换开始位置比如
strcpy(str1+2, str2);
第3个回答  2008-05-25
是完全覆盖,原来的先变空,再输入后面的值。
第4个回答  2008-05-25
原来位置的元素值,被新的值覆盖掉.

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网