C語言中字符串常用函數(shù)strcat與strcpy的用法介紹
更新時間:2013年07月11日 10:35:21 作者:
以下是對C語言中字符串常用函數(shù)strcat與strcpy的使用方法進行了詳細的分析介紹,需要的朋友可以參考下
strcpy原型聲明:extern char *strcpy(char* dest, const char *src);
頭文件:#include <string.h>
功能:把從src地址開始且含有NULL結(jié)束符的字符串復制到以dest開始的地址空間
說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
函數(shù)實現(xiàn):
/**********************
* C語言標準庫函數(shù)strcpy的一種典型的工業(yè)級的最簡實現(xiàn)
* 返回值:目標串的地址。
* 對于出現(xiàn)異常的情況ANSI-C99標準并未定義,故由實現(xiàn)者決定返回值,通常為NULL。
* 參數(shù):
* strDestination 目標串
* strSource 源串
***********************/
char *strcpy(char *strDestination,const char *strSource)
{
assert(strDestination!=NULL && strSource!=NULL);
char *strD=strDestination;
while ((*strD++=*strSource++)!='\0');
return strDestination;
}
/*
GNU-C中的實現(xiàn)(節(jié)選):
*/
char* strcpy(char *d, const char *s)
{
char *r=d;
while((*d++=*s++));
return r;
}
/* while((*d++=*s++)); 的解釋:兩層括號是為了取賦值表達式的值,
而賦值表達式的值為左操作數(shù),所以在復制NULL后,循環(huán)停止 */
strcat原型
extern char *strcat(char *dest,char *src);
用法
#include <string.h>
在C++中,則存在于<cstring>頭文件中。
功能
把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'。
說明
src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
函數(shù)實現(xiàn):
//將源字符串加const,表明其為輸入?yún)?shù)
char *strcat(char *strDest, const char *strSrc)
{
// 后文return address,故不能放在assert斷言之后聲明address
char *address = strDest;
assert((strDest != NULL) && (strSrc != NULL)); //對源地址和目的地址加非0斷言
while(*strDest) //是while(*strDest!='\0')的簡化形式
{
//若使用while(*strDest++),則會出錯,因為循環(huán)結(jié)束后strDest還會執(zhí)行一次++,
//那么strDest將指向'\0'的下一個位置。/所以要在循環(huán)體內(nèi)++;因為要是*strDest最后指
//向該字符串的結(jié)束標志'\0'。
strDest++;
}
while(*strDest++ = *strSrc++)
{
NULL; //該循環(huán)條件內(nèi)可以用++,
} //此處可以加語句*strDest='\0';無必要
return address; //為了實現(xiàn)鏈式操作,將目的地址返回
}
頭文件:#include <string.h>
功能:把從src地址開始且含有NULL結(jié)束符的字符串復制到以dest開始的地址空間
說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
函數(shù)實現(xiàn):
復制代碼 代碼如下:
/**********************
* C語言標準庫函數(shù)strcpy的一種典型的工業(yè)級的最簡實現(xiàn)
* 返回值:目標串的地址。
* 對于出現(xiàn)異常的情況ANSI-C99標準并未定義,故由實現(xiàn)者決定返回值,通常為NULL。
* 參數(shù):
* strDestination 目標串
* strSource 源串
***********************/
char *strcpy(char *strDestination,const char *strSource)
{
assert(strDestination!=NULL && strSource!=NULL);
char *strD=strDestination;
while ((*strD++=*strSource++)!='\0');
return strDestination;
}
/*
GNU-C中的實現(xiàn)(節(jié)選):
*/
char* strcpy(char *d, const char *s)
{
char *r=d;
while((*d++=*s++));
return r;
}
/* while((*d++=*s++)); 的解釋:兩層括號是為了取賦值表達式的值,
而賦值表達式的值為左操作數(shù),所以在復制NULL后,循環(huán)停止 */
strcat原型
extern char *strcat(char *dest,char *src);
用法
#include <string.h>
在C++中,則存在于<cstring>頭文件中。
功能
把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'。
說明
src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
函數(shù)實現(xiàn):
復制代碼 代碼如下:
//將源字符串加const,表明其為輸入?yún)?shù)
char *strcat(char *strDest, const char *strSrc)
{
// 后文return address,故不能放在assert斷言之后聲明address
char *address = strDest;
assert((strDest != NULL) && (strSrc != NULL)); //對源地址和目的地址加非0斷言
while(*strDest) //是while(*strDest!='\0')的簡化形式
{
//若使用while(*strDest++),則會出錯,因為循環(huán)結(jié)束后strDest還會執(zhí)行一次++,
//那么strDest將指向'\0'的下一個位置。/所以要在循環(huán)體內(nèi)++;因為要是*strDest最后指
//向該字符串的結(jié)束標志'\0'。
strDest++;
}
while(*strDest++ = *strSrc++)
{
NULL; //該循環(huán)條件內(nèi)可以用++,
} //此處可以加語句*strDest='\0';無必要
return address; //為了實現(xiàn)鏈式操作,將目的地址返回
}
您可能感興趣的文章:
- 詳解C語言中strcpy()函數(shù)與strncpy()函數(shù)的使用
- C語言中的strdup()函數(shù)和其與strcpy()函數(shù)的區(qū)別
- C語言 strcpy和memcpy區(qū)別詳細介紹
- C語言不使用strcpy函數(shù)如何實現(xiàn)字符串復制功能
- 徹底掌握C語言strcpy函數(shù)的用法
- 詳解c語言中的 strcpy和strncpy字符串函數(shù)使用
- C語言的strcpy函數(shù)你了解嗎
- C語言strcpy庫函數(shù)詳解
- C語言中strcpy()函數(shù)的具體實現(xiàn)及注意事項
- C語言庫函數(shù)strcpy的使用及模擬實現(xiàn)
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)時間復雜度及空間復雜度簡要分析
我們在進行編程時,往往會開發(fā)諸多的算法,那么我們怎么在那么多算法中找到最好的那個呢?本文主要介紹時間和空間復雜度概念及時間復雜度的求解,預祝讀者學習愉快2021-10-10C++語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實例代碼
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04Visual C++中Tab View的多種實現(xiàn)方法
這篇文章主要介紹了Visual C++中Tab View的多種實現(xiàn)方法,包括了CTabCtrl控件、CSheetCtrl標簽選擇窗口以及靜態(tài)分割窗口等實現(xiàn)Tab View的方法,需要的朋友可以參考下2014-10-10WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù)詳解
這篇文章主要介紹了WM_CLOSE、WM_DESTROY、WM_QUIT及各種消息投遞函數(shù),有助于讀者更好的理解windows程序的消息機制,需要的朋友可以參考下2014-07-07