C++博客 :: 首页 :: 新随笔 ::  ::  :: 管理

用scanf输入字符串空格不识别??

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

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理