一 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;
}
- 成果展示: