这篇博客主要介绍 C 语言的 scanf()

scanf() 函数是一个定义在 stdio.h 中的函数,可以从键盘读取一个数据并记录在某个变量对应的存储位置。

int scanf(const char *format,...);
  • scanf 标准函数要求必须使用存储位置的地址来表示这个存储位置,使用占位符表示存储位置所能存储的数据类型。

  • scanf 标准函数调用语句中双引号的内容是对用户输入格式的要求。

  • scanf 标准函数在结束的时候会遗留一个整数,遗留数为0表示没有读取到数据,如果直接将 scanf 标准函数的调用语句当作数字使用就可以得到它所遗留的数字。

  • 计算机读取数据的步骤是:

    • 按下键盘

    • 键盘缓冲区

    • 输入缓冲区

    • 取出数据,当取出的数据不匹配时,会将数据放回输入缓冲区,下次读取会继续从刚才的位置读取,这就可能导致因一次错误输入造成后面所有读取工作的失败。

因此,我们可以在一次读取后使用如下语句清空输入缓冲区:

scanf("%*[^\n]");
scanf("%*c");
/*
  scanf练习1
*/
#include <stdio.h>
int main(){
  int num1 = 0,num2 = 0;
  printf("请输入两个数字:");
  scanf("%d%d",&num1,&num2);
  scanf("abc%ddef%d",&num1,&num2);//需要输入abc数字def数字才能读取
  printf("您输入的数字是 %d 和 %d\n",num1,num2);
  return 0;
}
/*
编写程序计算用户给定数字的相反数
*/
#include <stdio.h>
int main() {
    int num = 0;
    printf("请输入一个整数:");
    scanf("%d",&num);
    printf("%d的相反数是:%d\n",num,0 - num);
}
/*
编写程序计算用户给定数字的相反数
*/
#include <stdio.h>
int main() {
    int num1 = 0,num2 = 0;
    printf("请输入矩形的长(>0):");
    scanf("%d",&num1);
    printf("请输入矩形的宽(>0):");
    scanf("%d",&num2);
    printf("长为%d,宽为%d的矩形面积是:%d\n",num1,num2,num1 * num2);
}