C 语言控制台输入

本文详细介绍了C语言中控制台输入的常用方法,包括scanf函数的输入缓存区、返回值问题以及接受的内容,getchar函数的使用注意事项,以及涉及字符串输入的gets函数的安全性问题。通过实例解析了输入过程中可能遇到的空格、回车和缓存区管理,强调了防止缓冲区溢出的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天很多人说期末考试C语言快要挂了,大佬救救我。

其实感觉自己也快要挂了,自己也是渣渣。

其实很多C语言的小细节自己都还没有搞清楚,在这里简单写一写吧。

(迷之微笑)


数据台输入

讲三个输入吧 scanf & getchar  还有一个字符串输入gets


1.scanf()函数


1.1输入缓存区


#include<stdio.h>

    int main()

    {

             char ch1, ch2;

             scanf("%c", &ch1);

             scanf("%c", &ch2);

             printf("%d  %d\n", ch1, ch2);

             return 0;

     }



么一个简单的小函数

对吧?

我们输入两个字母a b,来获取他们相应的ASCII码

一般会这么输入:

press 'a'

press 'Enter'

press 'b'

press 'Enter'


然而。。。。。

我们会发现输入的结果是

65 10

这好像与我们开始想的一点都不一样呢

WTF???


原因就在于有个叫做输入缓存区(buffer)的东西

当你输入了一串数据流之后按了‘Enter’之后

你输入的东西就会都保存在那个缓存区

然后你的scanf再去缓存区一个个读


SO

你的缓存区是这样的:


a   enter   b   enter


你的scanf("%c", &ch1); 接收了a

然后你的scanf("%c", &ch2);就读了一个。。。回车

所以这也是你为什么输出10这个神秘数字的原因


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值