调试程序的时候,遇到scanf gets等需要输入数据的,我的cmd中不能输入数据是怎么回事,是C++的b'y'qi

我按下一步还有F7都不会跳过下一步怎么办... 我按下一步还有F7都不会跳过下一步怎么办 展开
 我来答
百度网友2f757675
2016-08-23 · TA获得超过7233个赞
知道大有可为答主
回答量:7506
采纳率:90%
帮助的人:1890万
展开全部
  在键盘输入的时候 空格消息表示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也接收空格的
NnGgua
2016-08-23
知道答主
回答量:35
采纳率:0%
帮助的人:7.1万
展开全部
你在每一个 gets(...); 的下一行加一个 getchar(); 就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式