吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1240|回复: 3
收起左侧

[已解决] 使用Dev C++学C语言发现了一个奇怪的问题

[复制链接]
tpdddP 发表于 2022-4-3 12:20
本帖最后由 tpdddP 于 2022-4-3 13:39 编辑

代码如下:
[C] 纯文本查看 复制代码
#include<stdio.h>

int main()
{
        int a;
        char b;
        printf("输入数字a:\n");
        scanf("%d",&a);
        printf("输入字符b:\n");
        scanf("%c",&b);
        printf("数字a为:%d\n字符b为:%c",a,b);
        return 0;
}

结果如下:
[C] 纯文本查看 复制代码
输入数字a:
1
输入字符b:
数字a为:1
字符b为:

--------------------------------
Process exited after 0.9337 seconds with return value 0
请按任意键继续. . .

我敲下1再按回车,按道理应该打印“输入字符b:”,然后程序暂停,等待我输入字符后回车再继续,可是为什么这个编译器在我输入1后回车就执行剩下的代码呢?根本没有给我输入字符b的机会。
更奇怪的是,我把代码改成这样。
[C] 纯文本查看 复制代码
#include<stdio.h>

int main()
{
        int a,b;
        //char b;
        printf("输入数字a:\n");
        scanf("%d",&a);
        printf("输入数字b:\n");
        scanf("%d",&b);
        printf("数字a为:%d\n数字b为:%d",a,b);
        return 0;
}

在我输入1后回车,程序打印出"输入数字b:”后程序暂停,等待我输入数字。并不是像刚才那样直接执行剩下的代码。
求助论坛的hxd们,是什么问题呢?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我心飞翔1995 发表于 2022-4-3 12:33
在C语言中连续使用scanf()函数出现的问题_东飞儿的博客-CSDN博客_连续使用scanf
https://blog.csdn.net/PyDongJava/article/details/84572002

免费评分

参与人数 1吾爱币 +1 收起 理由
tpdddP + 1 谢谢@Thanks!

查看全部评分

cocoan 发表于 2022-4-3 13:11
本帖最后由 cocoan 于 2022-4-3 13:38 编辑

需要再去学习一下输入语句,尤其是它的工作原理的知识了解。这里我引用一点说明一下,后续还要自己去找资料看的。
scanf()是行缓冲区工作,当遇到 scanf() 函数时,程序会先检查输入缓冲区中是否有数据,以第1段程序为例,此时缓冲区为空,如果是空的,就等待用户输入,直到按下回车(换行符\n)输入结束,比如执行第一个scanf()时,输入1,按回车,此时变量a保存1,缓冲区还剩余一个\n,下一个scanf()在执行时,发现缓冲区中有内容,又符合控制字符串的格式,接收\n,结束。

免费评分

参与人数 1热心值 +1 收起 理由
tpdddP + 1 谢谢@Thanks!

查看全部评分

jamesAbc 发表于 2022-4-3 17:01
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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