2013-11-28 31 views
1

我怎麼會一個字符追加到字符串,有我在開始下面的方法沒有初始值:追加字符字符串沒有價值

void append(char a) { 
    const char *str; 

    char *ret = malloc (strlen(str)+2); 
    strncpy(str,strlen(str),ret); 
    ret[strlen(str)-2] = a; 
    ret[strlen(str)-1] = 0; 

    printf("%s", str); 
} 

我已經嘗試了一些不同的答案,其他問題但沒有人工作,請幫助。

+0

你不能。 'str'無效。 – John3136

+1

這個邏輯沒有意義。 'str'只有'append'的範圍,所以你打算怎麼做呢? –

+0

爲'str'分配至少兩個字節,設置'str [0] = a; str [1] = 0;'。 –

回答

1

由於指針str未初始化,因此不能將字符添加到指向的內容。什麼是有意義的取決於你接下來要做什麼。由於您沒有從函數返回值,因此除非append調用某個其他函數,否則無法訪問附加到a的字符串。

1

char *str;不是字符串。這是一個助記符,說* str會給你一個值,這應該是一個字符

str是隨機指向的指針。先讓它指向一堆分配的內存。 做一些事情,如str = malloc(100);,然後做一個*(str+1) = a然後*(str+2) = '\0' NULL來終止字符串。

0

怎麼是這樣的:

char * append(char a, const char * str) 
{ 
    char *ret = malloc (strlen(str)+2); 
    strncpy(str,strlen(str),ret); 
    ret[strlen(str)-2] = a; 
    ret[strlen(str)-1] = 0; 
    return ret; 
} 
+0

我做了不同的事情,並更新了我原來的帖子。我爲什麼給我錯誤? – user3044566