c语言strcpy()函数为什么输入的是\0?

如题所述

strcpy的本身属性:即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。

之前在某处看到过这个问题,以下将对其进行详解,

· 最终答案输出是 "ABC\0";

· 为什么答案不是"ABC\0ef";

从strcpy函数的实现代码可以看出当src指针指向为‘\0’时将会停止字符串的复制,由此可以得知返回ret指针所指向的数组a内容应该是 “ABC\0ef”,也就是说实际内存数组a中的内容应该是“ABC\0ef“;但是为什么最终显示会是"ABC\0"呢,原因在于,strcpy的本身属性:即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符;

基于此种原因,但是字符串的特性是什么呢?字符串最后一个字节存放的是一个空字符——“\0”,用来表示字符串的结束。把b复制到a之后会令b的空字符把复制后的字符串隔断,所以最终printf输出只能是"ABC\0";

如果想把一个字符串的一部分复制到另一个字符串的某个位置,该怎么办呢,显然strcpy()函数是满足不了这个功能的,strncpy()函数是为了弥补strcpy()函数不能检查目标字符串是否容纳下源字符串的不足而设定的一个函数。并且完全可以实现这个功能。

题主问的为什么,这个不用解释,你记住就好了。

温馨提示:答案为网友推荐,仅供参考
相似回答