Posted on 2011-05-08 10:22
Kevin_Zhang 阅读(2053)
评论(0) 编辑 收藏 引用 所属分类:
C/C++
用scanf不是不显示空格,
而是用scanf接收字符串的话,
在串首遇到空格的话,跳过,继续寻找下一个非空格字符,
在串中遇到空格时,结束字符串的输入。
所以如果用户输入" abcd efg"的话,
scanf取得的字符串为"abcd"。
而gets取得字符串时,是在遇到EOF(串尾)时停止,所以不存在这个问题。
控制符不同 你用%c说明是输入一个字符 此时可以scanf可以接受空格
但其他控制符都以空格为结束标志 如%d %s都是以空格为结束 所以你的二个不接受空格
总结:scanf 接受字符串,遇到空格结束,即以空格为结束符。
printf 输出字符串,遇到空格不结束,而是遇到'\0'这个字符串结束标志才结束。
因此为了处理方便,输入字符串时,scanf和gets永远分开使用。