strcpy用法例子,strcpy函数复制是覆盖么

strcpy函数复制是覆盖么

strcpy用法例子,strcpy函数复制是覆盖么


strcpy函数复制是覆盖,是部分覆盖 。strcpy函数拷贝之后,是将某一地址的字符串复制到另外一地址中,会将该地址中本身存在的字符串的一部分给覆盖掉 。
strcpy用法例子【strcpy用法例子,strcpy函数复制是覆盖么】strcpy之前,
str1[]="i love \0"
strcpy后, 复制过来5个字节,"zftd"和结尾的'\0'共5个字节.
于是变成
str1[]="zftd\0e \0"
输出的时候,遇'\0'字符截断,于是只输出"zftd"
C语言strcat和strcpy的不同strcat是将前一个参数字符串的\0去掉,然后将后一个字符串接上去,而strcpy则是用第二个字符串全部内容覆盖第一个的前部分,(对于第一个字符串超出第二个长度的部分不做改动,其中覆盖的部分包括结束符\0所以即使后部不改动并不影响字符串的值)
c语言 函数strcpy是完全覆盖内存里是部分覆盖了,你看以在查看内存看看 。
输出XYZ我认为是因为puts(a);这样之输出一个字符串;
覆盖后数组a的前三个字节是XYZ , 第四字节是结束标志\0;
第五字节开始是dfg , 所以你写puts(&(a[4])); 就可以输出dfg
strcpy函数是把原字符串覆盖了么内存里是部分覆盖了 , 你看以在查看内存看看 。
输出XYZ我认为是因为puts(a);这样之输出一个字符串;
覆盖后数组a的前三个字节是XYZ,第四字节是结束标志\0;
第五字节开始是dfg,所以你写puts((a[4]));
就可以输出dfg

    推荐阅读