c++ 格式化输入输出问题

发布于 2022-09-12 02:13:26 字数 379 浏览 24 评论 0

Snipaste_2020-04-14_23-18-12.png
第二个输出怎么不输出呢?
Snipaste_2020-04-14_23-18-40.png
去掉第一个输入就可以了,这是为什么呢?
2.png
1.png
真是很奇怪啊,崩溃

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅笑轻吟梦一曲 2022-09-19 02:13:26

这涉及到scanf对空白字符的处理。

虽然空格、制表符和新行符都用做域分割符号,但读单字符操作中却按一般字符处理。例如,对输入流 "x y" 调用:scanf("%c%c%c",&a,&b,&c);
返回后,x 在变量 a 中,空格在变量 b 中,y 在变量 c 中。

将y按%d打印,可以看到y的值为10,即回车符。

#include <stdio.h>
int main() {
  int x;
  char y;
  scanf("%d", &x);
  printf("x:%d", x);
  scanf("%c", &y);
  printf("y:%d", y);    // 将y按%d打印,可以看到y的值为10
  getchar();
  
  return 0;
}

改成char y[2];scanf("%1s", y);,可以过滤空白符。

不离久伴 2022-09-19 02:13:26

scanf%c 格式不会跳过空白字符。

你在输入一个整数的时候,实际还输入了一个回车。于是第二个 scanf("%c"...) 读到了这个回车。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文