请问在c语言中gets为什么遇到空格不停止而scanf遇到空格就停止了,请大神赐教!必有重谢!

如题所述

在键盘输入的时候 空格消息表示null代表输入结束 空格前边的值就赋给变量
123空格 由于第一个接收的是字符类型 只能接收'1' 23还在缓冲区里 这时i变量正需要接收10进制的整形数据...所以23就赋给了i 23后边是空格 就停止了

之后s又从缓冲区里接收了 字符串456 后边又是空格 接收停止 所以最后答案是1,23,456
如果第三个scanf改一下 变成scanf("%[^\n]", s); 答案就应该是第三个(456和789中间没有逗号)
scanf中%[^\n]是接收从^字符到\n字符的所有字符,原本scanf是不接收空格的,遇到空格就当做null来处理停止接受其后边的字符,但是这样控制输入后就会接收空格了,其实也可以用gets函数来接收,gets也接收空格的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-26
这个是函数定义的,scanf默认空格终止,也可以自定义输入停止符,如scanf( "%[^=] ")

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网