main()
〔
static char a[3];
scanf("%s",a);
printf("%c,%c",a[1] a[2]);
〕
如果输入ab
他的输出结果是啥啊?
2 回答
已采納

onemoo
TA貢獻883條經驗 獲得超454個贊
首先,你這個 printf 語句的參數 a[1] a[2] 間是不是少了個逗號啊。拋開這個筆誤。
你輸入的是一個字符串“ab”,不要忘了字符串結尾還有一個 \n。所以數組 a 中接受到的元素是 a b 和 \n。
printf 打印的是 a[1] 和 a[2]。數組下標是從 0 開始的,所以打印的是 a 的第二個和第三個字符,也就是 b 和 \n。
當然,那個 \n 只是一個回車,看不到字符的。 ?結果應該是 b,[回車]

onemoo
TA貢獻883條經驗 獲得超454個贊
前一個回答中我誤將 \0 寫成了 \n。
我想再詳細說明下 scanf 在讀字符串時的行為:當格式化指示符為 %s 時,scanf 就會將輸入的內容視為字符串,它會一個一個地接收字符直到你輸入了任何一個“空白字符”——回車、空格、tab 都算是空白字符——它就知道你字符串輸入完了,并且會自動再添加一個'\0'。 這是因為 C 規定字符串是以 '\0' 結尾的,所以它才自動添加這個 \0。
也就是說,就算我們輸入的是 a b [空格],這個字符串 a 得到的是 a b \0,而不是 a b \n。
另外,我們剛輸入的這個用來表明字符串結束的空白字符(不管是回車、空格還是tab),不會被 scanf 讀取走! ? 所以如果后面繼續用 scanf 讀 %c 的話,是會讀到這個空白字符的,這一點需要注意!。
- 2 回答
- 0 關注
- 1519 瀏覽
添加回答
舉報
0/150
提交
取消