int main(){
char array[2] = {'hola', 'adios'};
int i = 0;
while (i<3){
printf("%c", array[i]);
i++;
}
return 0;
}
我不知道爲什麼輸出是每個單詞的最後一封信,就像這樣:如:)在C中打印Char數組 - 只有最後一個字母?
而且它會出現一個笑臉,跆拳道?
我只是想輸出HOLA一路平安
int main(){
char array[2] = {'hola', 'adios'};
int i = 0;
while (i<3){
printf("%c", array[i]);
i++;
}
return 0;
}
我不知道爲什麼輸出是每個單詞的最後一封信,就像這樣:如:)在C中打印Char數組 - 只有最後一個字母?
而且它會出現一個笑臉,跆拳道?
我只是想輸出HOLA一路平安
你需要字符串,而不是字符。 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必須考慮一下'const'的必要性,我確信這是最好的。 – chux
char array[2] = {'hola', 'adios'};
這是無效的。您處於未定義行爲區域中。
您需要一個char**
或char[] []
並使用""
而不是''
作爲字符串。
什麼是未定義的?請參閱http://stackoverflow.com/questions/7459939/what-do-single-quotes-do-in-c-when-used-on-multiple-characters –
@KirilKirov字符文字在C++中有效。這個問題是關於C. –
點採取,我已經恢復了我的倒票,因爲我不是100%肯定它在C有效。 –
您正在創建數組2 單個字符元素。聲明兩個字符串數組,並使用雙引號來聲明字符串,而不是字符:
char* array[2] = {"hola", "adios"};
此外,在printf
,使用%s
打印出字符串。 i
應在範圍{0, 1}
- 不包括2
。
這不是無效的語法,它是一個多字符文字。 – chris
哦 - 不知道!謝謝! –
查看http://stackoverflow.com/questions/7459939/what-do-single-quotes-do-in-c-when-used-on-multiple-characters –
這不是一個字符數組,這是一個字符串數組,你需要在雙引號(「hola」)中包含'hola' – exexzian
如果我使用雙引號:char array initializer中的多餘元素 – frankie3
您需要將聲明部分更改爲就像這樣'char * array [2] = {「hola」,「adios」};' – exexzian