[C語言]給一個二維字元陣列賦值的問題
阿新 • • 發佈:2019-01-04
我一開始是想寫一個下五子棋的程式,打算用一個字元二維陣列構造棋盤:
期待輸出:#include <stdio.h> char a[10][10]; void p(char a[10][10]); int main(void) { int i, j; for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) a[i][j] = 'O'; } p(a); return 0; } void p(char a[10][10]) { for (int j = 0; j < 10; j++) printf("%s\n", a[j]); }
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
OOOOOOOOOO
實際輸出: OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOO
OOOOOOOOOO
為什麼?
"00000000000\0", "00000000000\0", "00000000000\0",
"00000000000\0", "00000000000\0", "00000000000\0",
"00000000000\0", "00000000000\0"};
注意:不能用a[10][11]! 錯誤的: a[10][11] = {"00000000000","00000000000",
"00000000000", "00000000000", "00000000000",
"00000000000", "00000000000", "00000000000",
"00000000000", "00000000000"};
至於為什麼不加‘\0’,輸出結果會是那樣,我還沒有想好。。。