LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: nait

scanf的疑问

[复制链接]
 楼主| 发表于 2005-1-2 22:51:35 | 显示全部楼层
我也不知道
或许是翻译的不到位也说不定
发表于 2005-1-3 09:40:31 | 显示全部楼层
scanf系列函数最大的问题是当碰到文件结尾或者输入的字符流与格式不符时,会中止。但这是所有的scanf系列函数都有的问题。
发表于 2005-1-4 09:20:19 | 显示全部楼层
原文中的“结束行”可能是指“\n”
发表于 2005-1-4 10:29:22 | 显示全部楼层
以前看c++的时候曾经碰到过说scanf函数读取的时候,会把比如说一个人名,harry potter在读完了harry后遇到空格,就认为输入结束了,所以会出现一些不期望的结果。是否类似?
发表于 2005-1-4 10:39:53 | 显示全部楼层
我曾经碰到过scanf的问题,是这样的:在读取信息时,\n有时候会流在输入缓冲中,这样下次读取的是一个回车符,而不是需要的信息。而且这种现象在不同的平台上表现是不同的,比如在windows上可以,在linux上不可以;在不同的输入格式上表现也可能不同,比如输入数字与输入字符串的表现可能不同。这样处理起来就很麻烦,有时候需要多执行一次scanf来过滤回车符,有时不需要。
用fgets输入的时候一般不会有这样的问题,所以得到字符串以后再用sscanf就比较可靠了。
发表于 2005-1-7 16:18:45 | 显示全部楼层
Post by bobhuang
我曾经碰到过scanf的问题,是这样的:在读取信息时,\n有时候会流在输入缓冲中,这样下次读取的是一个回车符,而不是需要的信息。而且这种现象在不同的平台上表现是不同的,比如在windows上可以,在linux上不可以;在不同的输入格式上表现也可能不同,比如输入数字与输入字符串的表现可能不同。这样处理起来就很麻烦,有时候需要多执行一次scanf来过滤回车符,有时不需要。
用fgets输入的时候一般不会有这样的问题,所以得到字符串以后再用sscanf就比较可靠了。

scanf 是有问题的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表