在C中複製字符串時,我需要注意哪些因素?什麼可能會出錯?複製字符串時需要注意些什麼?
我能想到在複製一個字符串之前我需要保留足夠的內存,並且必須確保我有足夠的權限來寫入內存(儘量避免常規保護錯誤),但是還有什麼我必須支付注意什麼時候複製字符串?是否還有其他潛在的錯誤?
在C中複製字符串時,我需要注意哪些因素?什麼可能會出錯?複製字符串時需要注意些什麼?
我能想到在複製一個字符串之前我需要保留足夠的內存,並且必須確保我有足夠的權限來寫入內存(儘量避免常規保護錯誤),但是還有什麼我必須支付注意什麼時候複製字符串?是否還有其他潛在的錯誤?
0
= '\0'
)。非常感謝您回答我的問題。既然這是我想知道的,我將在大約10分鐘內將您的答案標記爲解決方案。 – beta
C字符串通常是由零字節結尾的非零字節的數組。處理它們的例程得到一個指向一個字節的指針(也就是說,它指向從該字節開始的數組)。你應該注意保留的地方適合。瞭解有關strcpy
和strcat
及其有界配件strncpy
和strncat
。也關於strdup
。並且不要忘記清除終止字節爲零(特別是當達到與strncpy
等的邊界時)。某些庫(例如GTK的Glib)提供了很好的實用功能(例如g_strdup_printf
)構建字符串。
閱讀我提到的所有功能的文檔。
您需要:
分配的目的地足夠的內存(strlen的(源)+ 1)
確保源不爲NULL
處理Unicode的問題(串長度可能小於 字節的長度)
它實際上是我作業中複製字符串的一部分,而不使用string.h提供的函數,是的。由於我對memcpy(或通常爲C)等函數的使用經驗非常有限,因此我想確保自定義的「strcpy」能夠很好地工作,並且在複製字符串時注意所有可能出錯的地方。 – beta