Posted on 2011-05-08 10:22
Kevin_Zhang 閱讀(2075)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
C/C++
用scanf不是不顯示空格,
而是用scanf接收字符串的話,
在串首遇到空格的話,跳過(guò),繼續(xù)尋找下一個(gè)非空格字符,
在串中遇到空格時(shí),結(jié)束字符串的輸入。
所以如果用戶輸入" abcd efg"的話,
scanf取得的字符串為"abcd"。
而gets取得字符串時(shí),是在遇到EOF(串尾)時(shí)停止,所以不存在這個(gè)問(wèn)題。
控制符不同 你用%c說(shuō)明是輸入一個(gè)字符 此時(shí)可以scanf可以接受空格
但其他控制符都以空格為結(jié)束標(biāo)志 如%d %s都是以空格為結(jié)束 所以你的二個(gè)不接受空格
總結(jié):scanf 接受字符串,遇到空格結(jié)束,即以空格為結(jié)束符。
printf 輸出字符串,遇到空格不結(jié)束,而是遇到'\0'這個(gè)字符串結(jié)束標(biāo)志才結(jié)束。
因此為了處理方便,輸入字符串時(shí),scanf和gets永遠(yuǎn)分開使用。