scanf 函数 —— 基本的输入函数

scanf 函数 —— 基本的输入函数一、概述scanf函数和printf函数一样,用途广泛,其功能用一句话概括就是“通过键盘给程序中的变量赋值”。二、用法(格式)scanf函数的两种用法,或者说两种格式如下:1、scanf(“输入控制符”,输入参数);/*-英文输入法输入-*/简单、常用用法例如:scanf(“%d”,&i);/*&i表示变量i的地址,&是取地址符…

一、概述

scanf 函数和 printf函数 一样,用途广泛,其功能用一句话概括就是 “ 通过键盘给程序中的变量赋值 ” 。

二、用法(格式)

scanf 函数的两种用法,或者说两种格式如下:

1、 scanf( ” 输入控制符 ” ,输入参数);      /* —–  英文输入法输入  —–*/    简单、常用用法      

例如:scanf(“%d”, &i);                       /* &i 表示变量 i 的地址,&是取地址符 */                                 

功能:将从键盘输入的字符转化为“ 输入控制符 ” 所规定格式的数据,然后存入以输入参数的值为地址的变量中。

“ 输入控制符 ” 和 “ 输出控制符 ” 是一模一样的。例如:一个整型数据,通过 printf 输出用 %d 输出,通过 scanf 输入时同样是用 %d 输入。

&是一个取地址运算符,&后面加变量名表示“该变量的地址”,所以&i就表示变量 i 的地址。&i又称为“ 取地址i ”,就相当于将数据存入以变量 i 的地址为地址的变量中,也就是将数据存入变量i中。

 综上所述:假如从键盘上输入字符 123,然后  %d 将这三个字符转化成十进制数 123,通过 “ 取地址 i ” 找到变量 i 的地址,再将数字 123 放到以变量 i 的地址为地址的变量中,即将数字 123 放到变量 i 中,所以最终的输出结果就是 i=123

或例如:scanf(“%d%d”, &i, &j);        /*一次给多个变量赋值*/

注意:       

        1)、键盘输入数据给多个变量赋值时,赋的值之间一定要用空格、回车或者 Tab 键隔开,用以区分是给不同变量赋的值。其中空格、回车或 Tab 键的数量不限,只要有就行。一般都使用一个空格。

         2)、scanf函数双引号内的多个 “ 输入控制符 ” 之间,千万不要加逗号。原因其一是:键盘输入时,逗号的数目容易出错;原因其二是:键盘输入时,中/英输入法容易混淆,会极大可能增加代码的出错率。

2、scanf( ” 输入控制符非输入控制符 ” , 输入参数);    /* —–  英文输入法输入  —–*/   不建议使用 

例如:scanf(“i = %d”, &i);         /* &i 表示变量 i 的地址,&是取地址符 */

“ 非输入控制符 ” 就是除了“ 输入控制符 ” 的其他符号,例如: i= 

综上所述:所有的 “ 非输入控制符 ” 在键盘上输入时都要原样输入,即键盘输入的时候 i= 必须要原样输入。例如:如果需要键盘输入给变量 i 赋值 123,那么必须在键盘上输入i=123才正确,否则就是错误。

不建议使用原因:scanf函数中的“ 非输入控制符 ” 在键盘输入过程中,既累赘又麻烦,没必要多此一举。 

所以在使用scanf函数时,务必记住 < 双引号内永远都不要加 “ 非输入控制符 ” >,只用 “ 输入控制符 ” ,即采纳用法(格式)1。

三、小结

1、scanf 的使用看似细节繁杂,但使用起来非常简单。就目前而言,只要掌握以下五点:

    1)、在 scanf 的“输入参数”中,变量前面的取地址符&不要忘记。       

    2)、scanf 函数 双引号内,除了“ 输入控制符 ”外什么都不要写,尤其是不要用 \n 。         

    3)、“ 输出控制符 ” 和 “ 输出参数 ” 无论在 “ 顺序上 ” 还是在 “ 个数上 ” 一定要一一对应。 

    4)、“ 输入控制符 ” 的类型和变量所定义的类型一定要一致。对于从键盘输入的数据的类型,数据是用户输入的,程序员是无法决定的,所以在写程序时要考虑容错处理。       

    5)、使用 scanf 函数之前先用 printf 函数提示输入。

2、关于缓冲区的理解: 

        在 scanf 函数中,从键盘输入的一切数据,不管是数字、字母,还是空格、回车、Tab 等字符,都会被当作数据存入缓冲区。存储的顺序是先输入的排前面,后输入的依次往后排。按下回车键的时候 scanf 开始进入缓冲区取数据,从前往后依次取。   

        如果 scanf 函数中仅有 %d ,则 scanf 函数只识别“十进制整数”。对 %d 而言,空格、回车、Tab 键都是区分数据与数据的分隔符。当 scanf 函数进入缓冲区中取数据的时候,如果 %d 遇到空格、回车、Tab 键,那么它并不取用,而是跳过继续往后取后面的数据,直到取到“十进制整数”为止。对于被跳过和取出的数据,系统会将它从缓冲区中释放掉。未被跳过或取出的数据,系统会将它一直放在缓冲区中,直到下一个 scanf 来获取。但是如果 %d 遇到字母,那么它不会跳过也不会取用,而是直接从缓冲区跳出。   

        如果将 %d 换成 %c,那么任何数据都会被当作一个字符,不管是数字还是空格、回车、Tab 键它都会取回。

四、实践问题总结 

1、判断“等不等于”是“==”,赋值是“=”。   

2、采用用法(格式)1的代码,其中 scanf 函数的“ 输入控制符 ”(%d)加没加空格隔开,当键盘输入字符时,都必须用空格、回车或者 Tab 键隔开。 

scanf 函数 —— 基本的输入函数

3、采用用法(格式)2的代码,其中 scanf 函数的“ 非输入控制符 ”(a/b/c)前面必须加一个空格隔开,否则会出现刷屏结果。而当键盘输入字符时,都可以或不用空格、回车或者 Tab 键隔开。

scanf 函数 —— 基本的输入函数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/36026.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注