设为首页 加入收藏

TOP

C里面的scanf对于空白字符的处理
2014-11-24 07:51:29 来源: 作者: 【 】 浏览:0
Tags:面的 scanf 对于 空白 字符 处理

写了点C的程序,写到scanf的时候,对于空白字符的处理有点迷惑,于是做了点小实验,并查了资料,在这里详细说说。


在scanf里面的第一个参数——格式化字符串s里面的空白字符的作用是对于输入里面的空白字符进行匹配。


在s里面的连续空白字符都会被当成一个空白字符处理。而一个空白字符对应输入里面的一段连续空白字符。当进行匹配的时候,他会一直匹配到下一个非空字符的出现才停止。


所以,如果有下面的语句:


int tmp;


scanf("%d ", &tmp);


而输入"12 "的时候,你会发现程序不会继续运行,而是仍然在等待你的下一次输入。这是因为在匹配完12并转换成int之后,后面的空白字符跟"%d "后面的空白字符进行匹配,而因为他是一直匹配到下一个非空白字符,所以当他匹配完所有的空格后,他仍然没有遇到一个非空字符,所以继续匹配,这时就等待你的输入。


所以一般来说,在格式串的最后都不要加空白字符。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇利用Shell或其他脚本语言在Apache.. 下一篇Linux里的函数库(Library)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)