亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C語言大神求救!

C語言大神求救!

C
做一個好碼農 2017-06-16 15:35:46
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,[回車]

查看完整回答
1 反對 回復 2017-06-16
  • 做一個好碼農
    做一個好碼農
    明白了,謝謝
  • onemoo
    onemoo
    我無意中又點進這里,發現我回答中竟然寫錯了! 回答的第2行中“不要忘了字符串結尾還有個\n”,這里應該是\0,而不是\n! 抱歉了! 我另外又給你寫了一個回復來詳細說明。
?
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 的話,是會讀到這個空白字符的,這一點需要注意!。

查看完整回答
反對 回復 2017-09-12
  • 2 回答
  • 0 關注
  • 1519 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號