1. 程式人生 > >strcpy與strcpy_s

strcpy與strcpy_s

strcpy

C語言標準庫函式,包含標頭檔案:#include<stdio.h>   #include<string.h>

實現:

char *strcpy(char *des, const char *source)
{
    char *r = des;
    assert((des!=NULL) && source!=NULL);
    while((*r++ = *source++) != '\0');     //賦值表示式返回左運算元,所以在'\0'後,迴圈停止
    return des';
}
使用時注意:若陣列長度不足以容納整個字串,則會導致程式出現不可預知的錯誤。

strcpy_s

與strcpy的功能幾乎是一樣的。

區別:strcpy無法保證有效的緩衝區尺寸,只能確保使用了足夠大的緩衝區,而strcpy_s則可以避免以上行為。

有兩個引數和三個引數兩種型別。

三個引數時:

errno_t strcpy_s(char *strDestination, size_t numberofElements,  const char *strSource){}

兩個引數時:

errno_t strcpy_s(char (&strDestination)[size], const char *strSource){}//C++ only