C语言连续输入(scanf)输出(printf)导致输入语句未执行被直接跳过的问题解决

前言:

       闲来无事打开曾经用过的C编辑器准备写一个简单的计算器代码,在测试的时候发现当控制台连续接收输入、输出语句存在输入语句被跳过的现象,可能是太久没有使用C编写代码的缘故一时不知如何解决。

       好在冲一会儿浪算是搞明白了,大概意思就是接收的数据被放在缓冲区中,当程序执行下一次的输入是 字符型 的时候,这时程序会优先取得缓冲区中的数据。

       比如当用户输入int类型的数字后,为了让程序继续向下执行而敲的回车(“\n”)会被记录在缓冲区中。这样,如果继续执行字符输入会出现被跳过的现象。

代码示例:

// printf("请输入第一个数:");
// scanf("%d", &num1);
// printf("请输入运算符号:");
// scanf("%c", &op);
// printf("请输入第二个数:");
// scanf("%d", &num2);

printf("请输入第一个数:");
scanf("%d", &num1);
getchar(); // 清空缓冲区
printf("请输入运算符号:");
scanf("%c", &op);
printf("请输入第二个数:");
scanf("%d", &num2);

(1)(2)(3)

 23-4-5记录一下Java中的此类问题:

Java中当输入是字符串时 next() 和 nextLine() 的区别

next只能识别一段完整的字符,遇到空格、回车结束。

nextLine会识别输入的全部内容,识别的同时遇到回车结束。

代码示例:

Scanner sc = new Scanner(System.in);

// System.out.println("next输入:");
// String s1 = sc.next();
// System.out.println("nextLine输入:");
// String s2 = sc.nextLine();

System.out.println("next输入:");
String s1 = sc.next();
System.out.println("nextLine输入:");
sc.nextLine();
String s2 = sc.nextLine();

 (1)(2)(3)

👍👍👍

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值