一 strcpy简介
功能:将源字符串(包括 \0
)复制到目标地址。
原型:
char *strcpy(char *dest, const char *src);
- 参数:
dest
:目标地址(需足够大)。src
:源字符串(以\0
结尾)。
- 返回值:返回
dest
的指针。
示例:
char src[] = "ABC";
char dest[10];
strcpy(dest, src); // dest 变为 "ABC"
风险:不检查 dest
空间,可能溢出(如 src
比 dest
长)
一句话总结:快速复制字符串,但需确保目标空间足够,否则用安全替代函数。
二 封装自己的strcpy函数
- 代码示例:
#include <stdio.h>
#include <string.h>//依据"strcpy"函数原型封装一个函数用于实现其功能
char *MyStrcpy(char *dest,char *string)
{ //正式操作前进行安全性检查if(dest==NULL||string==NULL){return NULL;}//函数的主体char *back=dest; //对目标指针进行保存while(*string!='\0'){*dest=*string;dest++;string++;}*dest='\0';return back;
}int main()
{char str[128]={'\0'};char *p="Hello Word!";MyStrcpy(str,p);printf("%s",str);return 0;
}
- 成果展示:
三 strncpy简介
功能:安全复制字符串,限制长度防溢出
用法:
char *strncpy(char *dest, const char *src, size_t n);
-
参数:
dest
:目标缓冲区(存储复制结果)。src
:源字符串(以\0
结尾)。n
:最多复制的字符数(包括\0
)。
-
返回值:返回
dest
的指针。 -
最多复制
n
个字符到dest
-
若
src
较短,剩余空间补\0
-
若
src
较长,不会自动加\0
注意:
-
需确保
dest
足够大 -
建议手动补
\0
:dest[n-1] = '\0';
示例:
char dest[5];
strncpy(dest, "hello", 5);
dest[4] = '\0'; // 安全终止
特点:
- 比
strcpy
安全 - 需自行处理字符串终止
四 封装自己的strncpy函数
- 代码示例:
#include <stdio.h>
#include <string.h>//依据"strncpy"函数原型封装一个函数用于实现其功能
char *MyStrncpy(char *dest,char *string,int count)
{ //正式操作前进行安全性检查if(dest==NULL||string==NULL){return NULL;}//函数的主体char *back=dest; //对目标指针进行保存while(*string!='\0'&&count>0){*dest=*string;dest++;string++;count--;}if(count>0){while(count>0){count--;*dest++='\0';}return dest;}*dest='\0';return back;
}int main()
{char str[128]={'\0'};char *p="Hello Word!";MyStrncpy(str,p,6);printf("%s",str);return 0;
}
- 成果展示: