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