簡體   English   中英

像這樣將 char 連接到 char 數組是否正確?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM