黑马程序员——C语言中的scanf函数

时间:2022-09-20 00:25:01
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一、scanf函数介绍及使用

1、scanf函数介绍

1)scanf函数的特点:

是阻塞式的函数,在函数执行后,会等待用户的输入,如果用户不输入任何内容,它会一直等待

2)scanf函数的作用:

从键盘接收用户输入的内容,保存到指定的变量中

3)scanf函数格式:

scanf函数中的格式控制符和输入项地址列表都不能省略

    scanf("格式控制符",输入项的地址列表);

4)格式控制字符串:

规定数据输入的格式,由格式控制符合普通字符组成,格式控制符合百分号(%)一起使用,用来说明输入数据的数据类型(格式字符)。

5)输入项地址列表:

需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。

6)其它:

在C语言中,一个变量的地址可以通过地址运算符&得到。

    int a = 0, b = 0;    //定义两个变量并初始化
printf("&p,%p", &a, &b); //输出a,b变量的内存地址

黑马程序员——C语言中的scanf函数

2、scanf函数中格式控制符介绍

1)常见的格式控制符

黑马程序员——C语言中的scanf函数

2)常见的使用方法

基本用法一:获取输入单个整型或者实型数据

当格式控制符要求输入整型数据时,如果输入的是小数,只能保存该小数的整数部分

#include <stdio.h>   // 使用scanf函数,必须包含头文件stdio.h
int main(int argc, const char * argv[]) {
//从键盘上接收一个人得年龄,然后打印出来
//1、定义变量
int age=-1;
//2、给一个提示,让用户输入一个年龄
printf("请输入年龄:\n");
//把用户输入的值,放到age变量中
scanf("%d",&age); //获取了age这个变量的地址
//3、打印用户输入的年龄
printf("您输入的年龄是:%d\n",age);
return
}

 
 
 
 
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


要求输入实数时,如果输入其它类型数据,则无法输出

在scanf函数中,可以控制域宽,但不能控制小数点后的位数

#include <stdio.h>
int main(int argc, const char * argv[]) {
//接收一个小数
float score = 0.0f;
printf("请输入一个分数:\n");
//接收用户输入的值保存到score中
scanf("%3f",&score); //此处不允许写%m.nf ,但是%mf是可以的
//打印score的值
printf("%3.2f\n",score);
return 0
}

二、scanf使用注意事项与原理

1、scanf使用注意事项

1)如果在输入时,输入了多个空格、回车、Tab都会被系统忽略的

2)如果要获取的内容是多个整数,中间输入量多个空格、回车、Tab都会被系统忽略

#include <stdio.h>

int main (int argc, const char * argv[]) {
int a = 0;
int b = 0;
scanf("%d%d", &a, &b);
printf("%d,%d\n",a, b);
return 0;
}

黑马程序员——C语言中的scanf函数

黑马程序员——C语言中的scanf函数

3)非法的格式输入,得不到想要的结果

4)当整型和字符型数据混合输入时,要避免“空格”添麻烦

为防止混合输入时空格造成的错误,可以通过添加普通的分隔符解决

5)scanf函数当遇到回车的时候,会结束执行

2、scanf中的修饰符

scanf函数的修饰符有:数据读入宽度(域宽、)*和长度

1)域宽:指定输入数据的宽度

    int a;
scanf(%5d,&a);
printf(%d\n",a);
黑马程序员——C语言中的scanf函数

2)*:跳过相应数据不作处理——%*d忽略一个数字,%c忽略一个字符

    int a,b;     
a = b = -1; //连续赋值
scanf("%d%*d%d",&a,&b);
printf("%d,%d",a,b);

黑马程序员——C语言中的scanf函数

 

    int a, b, c;
scanf("%d%*c%d%*c%d", &a, &b, &c);
printf("%d, %d,%d\n", a, b, c);
黑马程序员——C语言中的scanf函数

3)1或h:读入长整型、双精度或短整型数据

4)关于“\n”的使用问题:尽量不要使用,如果不小心使用,则可通过下面两种方法解决

a.输入值后,随便输入一个内容

b.\n要原样输入

3、scanf函数原理

如果输入缓冲区的内容不为空,scanf会一直从缓冲区中获取,而不要求再次输入

黑马程序员——C语言中的scanf函数