天天看點

strcpy/sprintf/memcpy的差別及适用場景 char*strcpy(char *dest, const char *src);

char*strcpy(char *dest, const char *src);

其對字元串進行操作,完成從源字元串到目的字元串的拷貝,當源字元串的大小大于目的字元串的最大存儲空間後,執行該操作會出現段錯誤。

int sprintf(char*str, const char *format, ...)

函數操作的源對象不限于字元串:源對象可以是字元串、也可以是任意基本類型的資料。主要是實作将其他資料類型轉換為字元串。

void *memcpy(void*dest, const void *src, size_t n)

實作記憶體的拷貝,實作将一塊記憶體拷貝到另一塊記憶體。該函數對源對象與目的對象沒有類型限制,隻是對記憶體的拷貝。

适用差別:

在拷貝過程中,strcpy與sprintf遇到源字元中有‘\0’(即ascii碼為00)時會認為資料結束,停止拷貝,使用memcpy就不會出現這種情況。

注:聽前輩說在拷貝更新軟體時會遇到這種情況。

繼續閱讀