2013-12-20 64 views
-2
int main(){ 

    char array[2] = {'hola', 'adios'}; 
    int i = 0; 

    while (i<3){ 
     printf("%c", array[i]); 
     i++; 
    } 

    return 0; 
} 

我不知道爲什麼輸出是每個單詞的最後一封信,就像這樣:如:)在C中打印Char數組 - 只有最後一個字母?

而且它會出現一個笑臉,跆拳道?

我只是想輸出HOLA一路平安

+2

這不是一個字符數組,這是一個字符串數組,你需要在雙引號(「hola」)中包含'hola' – exexzian

+0

如果我使用雙引號:char array initializer中的多餘元素 – frankie3

+0

您需要將聲明部分更改爲就像這樣'char * array [2] = {「hola」,「adios」};' – exexzian

回答

4

你需要字符串,而不是字符。 hola是一個字符串,而不是char。字符串被包圍在""中,而不是在''中。因此,你需要

const char* array[2] = { "hola", "adios" }; 

現在,這個數組有2個元素,所以循環通過他們

while (i<2){ /* also NOTE: 2 elements in the array */ 
    printf("%s", array[i]); /* note the "%s", it's not "%c" */ 
    i++; 
} 

我會使用for循環來代替。

爲什麼你沒有編譯時錯誤?見What do single quotes do in C++ when used on multiple characters? - 它在C類似。

+1

+1必須考慮一下'const'的必要性,我確信這是最好的。 – chux

1
char array[2] = {'hola', 'adios'}; 

這是無效的。您處於未定義行爲區域中。

您需要一個char**char[] []並使用""而不是''作爲字符串。

+0

什麼是未定義的?請參閱http://stackoverflow.com/questions/7459939/what-do-single-quotes-do-in-c-when-used-on-multiple-characters –

+1

@KirilKirov字符文字在C++中有效。這個問題是關於C. –

+0

點採取,我已經恢復了我的倒票,因爲我不是100%肯定它在C有效。 –

2

您正在創建數組2 單個字符元素。聲明兩個字符串數組,並使用雙引號來聲明字符串,而不是字符:

char* array[2] = {"hola", "adios"}; 

此外,在printf,使用%s打印出字符串。 i應在範圍{0, 1} - 不包括2

+1

這不是無效的語法,它是一個多字符文字。 – chris

+0

哦 - 不知道!謝謝! –

+0

查看http://stackoverflow.com/questions/7459939/what-do-single-quotes-do-in-c-when-used-on-multiple-characters –