C for ios --- Scanf函数介绍

Scanf函数基本概念

1.scanf函数介绍

  • scanf函数是一个阻塞式函数
    • 程序会停在scanf函数出现的地方, 直到接收到数据才会执行后面的代码
  • scanf函数原型包含在标准输入输出头文件“stdio.h”中,用于接收键盘输入的内容。
    • 格式:scanf(“格式控制字符串”,输入项地址列表);
    • 例如: scanf(“%d”, &num);
    • 格式控制字符串:
      • 规定数据输入的格式,由格式控制符和普通字符组成,格式控制符和百分号(%)一起使用,
        用来说明输入数据的数据类型(格式字符)。
        ” + 输入项地址列表:
        ” * 需要接收数据的变量地址,这些输入项与格式控制字符串在类型和数量上要对应,当有多个 输入项时,各个地址名之间以逗号“,”分隔。输入格式和变量类型要保持一致。

(img)

在C语言中,一个变量的地址可以通过地址运算符&得到。例如:定义int a,b;则a,b的 地址为&a,&b

2.scanf函数格式控制符

格式意义
d输入一个十进制整数
o输入一个八进制整数
x输入一个十六进制整数
i输入一个有符号或无符号的十进制、八进制、十六进制整数
u输入一个无符号十进制整数
f 、e或E、 g或G输入一个小数形式或指数形式的浮点数
c输入一个字符
s输入一个字符串
  • 获取整形数据

~~
~~ // 1.定义变量用于接收输入数据
~~ int num = 0;
~~ // 2.利用scanf函数接收用户输入数据
~~ scanf("%d", &num);
~~ // 3.打印验证结果
~~ printf("num = %d", num);
~~

- 获取实数型数据

~~
~~ // 1.定义变量用于接收输入数据
~~ float num = 0;
~~ // 2.利用scanf函数接收用户输入数据
~~ scanf("%f", &num);
~~ // 3.打印验证结果
~~ printf("num = %d", num);
~~

  • 分隔符
    • 除”空格”,”回车”,”tab”之外, 如果输入的数据和scanf接收的数据不匹配将会自动结束接收
    • 如果scanf中没有分隔符则可以使用回车 空格 tab作为分隔符
    • 格式化字符串中如果有%c的时候,%c会接收任意的字符 所以上述的情况会受到影响
      (技巧:无论想接收什么类型的数据,只要有需要一次性接收多个,就给每一个数据之间加上固定的符号作为分隔符)
    • 回车是scanf的结束符,不能在scanf的格式化字符串末尾写上\n,如果想结束程序,就输入一个不匹配的类型
    • scanf函数中,只要不是%c,空格会被忽略。

      /*int number;
      scanf("%i",&number);
      printf("%i",number);*/
      //todo 从控制台接收用户输入的两个整数,计算整数和
      /*printf("请输入一个数字\n");
      int a;
      scanf("%i",&a);
      printf("请输入另一个数字\n");
      int b;
      scanf("%i",&b);
      int sum = a+b;
      printf("计算结果为%i\n",sum);*/
      /* int num1,num2;
      printf("请输入两个数\n");
      scanf("%i,%i",&num1,&num2);
      printf("运算结果%i",num1+num2);*/
      printf("请输入:\n");
      int number;
      int number2;
      char value;
      scanf("%i\n%i\n%c\nreturn",&number,&number2,&value);
      printf("number = %i,number2 = %i,char = %c",number,number2,value);

Scanf函数实现原理

本小节知识点:

1. scanf的运行原理

1.scanf的运行原理

  • 系统会将用户输入的内容了放入输入缓冲区
  • scanf方式会从输入缓冲区中逐个取出内容赋值给格式符, 如果类型不一致不会修改原有数据

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值