[英]Is it correct to concatenate char to char array like that?
我試圖將字符數組與單個字符連接起來。 我已經看到了一些解決方案,但我也看到了這個,我不確定它是否正確。
void addCharacter( char* array, const char c )
{
int asize = strlen( array );
array[ asize ] = c;
array[ asize+1 ] = '\0';
}
int main()
{
char arrayd[13] = "Hello World!";
printf("%s\n", arrayd);
addCharacter(arrayd,'1');
printf("%s\n", arrayd);
return 0;
}
它編譯並且看起來不錯,但它應該像這樣解決還是分配內存並創建更大尺寸的新數組?
只要array
至少分配了asize + 1 + 1
個字節就可以了。
如果不是,那么程序的行為將是未定義的。 在你的情況,是未定義的行為arrayd
是一個13字節數組。
我個人希望看到array
的長度作為參數傳遞給函數,以便您可以在使用時檢查。
您可以將realloc
功能內置到函數中,但隨后您需要將array
作為char**
傳遞,以便您可以修改指針,並且您需要擔心原始指針的使用者無效的風險。
最后,為c
傳遞 NUL 本質上是一個空操作; 如果我是你,我會明確處理這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.