C语言中scanf输入汇总

本文详细介绍了C语言中用于获取用户输入的函数,如scanf、getchar、gets等,强调了scanf函数的灵活性和复杂性。文章提供了scanf函数的格式控制符汇总,包括对字符、整数、浮点数和字符串的处理,并通过实例展示了正确使用scanf避免输入错误的方法。同时,讨论了long long类型的输入输出以及int类型的范围。最后,总结了%d格式控制符的不同形式及其作用。

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

C语言中,有多个函数可以从键盘获得用户输入:

  • scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
  • getchar()getche()getch():这三个函数都用于输入单个字符。
  • gets():获取一行数据,并作为字符串处理。                                                      

  在这其中scanf函数是最灵活、最复杂、最常用的输入函数,但它不能完全取代其他函数,所以都要有所了解。

下面是关于scanf函数用法的一些总结:

scanf() 格式控制符汇总

格式控制符

说明

%c

读取一个单一的字符

%hd%d%ld

读取一个十进制整数,并分别赋值给 shortintlong 类型

%ho%o%lo

读取一个八进制整数(可带前缀也可不带),并分别赋值给 shortintlong 类型

%hx%x%lx

读取一个十六进制整数(可带前缀也可不带),并分别赋值给 shortintlong 类型

%hu%u%lu

读取一个无符号整数,并分别赋值给 unsigned shortunsigned intunsigned long 类型

%f%lf

读取一个十进制形式的小数,并分别赋值给 floatdouble 类型

%e%le

读取一个指数形式的小数,并分别赋值给 floatdouble 类型

%g%lg

既可以读取一个十进制形式的小数,也可以读取一个指数形式的小数,并分别赋值给 floatdouble 类型

%s

读取一个字符串(以空白符为结束)

%c格式对应的是单个字符,%s格式对应的是字符串

%c输入函数只会对一个字节空间赋值,而%s会一直赋值,直到输入中遇到空白字符为止

举例:

1:char a; 

2:char b[20];

3:scanf("%c",&a); //只能输入一个字符。

4:scanf("%s",b); //可以输入一串不超过20字符的字符串

在输入数组时,谨记:

int n;
    int a[6];
    scanf("%d\n",&n);
    for(int i=0;i<n;i++)
    {
        for(int k=0;k<6;k++)
    {
            scanf("%d",&a[k]);
    }

如果像上述那样输入会造成编译器把六个数字会当成一个数字输进去

方法1:用字符数组

             char a[7];
             gets(a);

方法2:用%1d

让编译器一次只能读入一个数字

long long 类型的输入输出

long long a;

scanf("%lld",&a);

printf("%lld",a);

unsigned long long :
的范围是[0,264-1]。如果越界了以后就相当于是对264-1求模了。
long long:是有符号类型它的范围是[-263-1,263+1],因为有符号的第63位表示“正负”而不表示数值。但数据越界了以后就会从负数开始计数

printf("%lld",a);

printf("%llu",a);

int 十进制:-2^31=-21 4748 3648 到 2^31-1=21 4748 3647。共10位,21亿。
在32位或64位机器中,int占4个字节,即32位。(一个字节,占8位)

int能表示的最大正整数为:
0111 1111 1111 1111 1111 1111 1111 1111  (最高位表示符号位,正数符号位为0)对应的10进制数为2^31-1=2147483647,对应的十六进制表示为:0x7FFFFFFF。

int能表示的最小负整数为:
1000 0000 0000 0000 0000 0000 0000 0000  (最高位表示符号位,负数符号位为1),负数在计算机中以补码的形式存在,所以对应的原码(补码的补码)也是1000 0000 0000 0000 0000 0000 0000 0000,对应的十六进制表示为0x80000000,而C/C++规定该值为-2^31=-2147483648。

      

所以最终,int类型(整数类型)的范围为-2^31 ~ 2^31-1,即-2147483648~2147483647,十六进制表示:0x80000000~0x7FFFFFFF。
                          

%d的几种形式总结

1、%d就是普通的输出了

2、%2d是将数字按宽度为2,采用右对齐方式输出,若数据位数不到2位,则左边补空格.%-2d是将数字按宽度为2,采用左对齐方式输出。

3、%02d,和% 2d差不多,只不过左边补0

修饰符 格式说明 意义:1、M

%md 以宽度m输出整型数,不足m时,左补空格

2、0m

%0md 以宽度m输出整型数,不足m时,左补零

3、m,n

%m.nf 以宽度m输出实型小数,小数位为n位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值