c语言中scanf函数的用法详解

scanf() 是 C 语言中常用的输入函数,用于从标准输入流(通常是键盘)读取数据,并按照指定的格式进行解析和存储。它的基本格式如下:

int scanf(const char *format, ...);

其中,第一个参数 format 是一个字符串,用于指定输入数据的格式。它包含了若干个格式控制符,每个控制符都以 % 开头,用于指定要读入的数据类型和如何解析输入数据。例如,%d 表示读入一个整数,%f 表示读入一个浮点数,%s 表示读入一个字符串。

scanf() 函数支持读入多种数据类型的数据,并且可以使用多个格式控制符按顺序读入多个数据。例如,下面的代码将从标准输入流中读入两个整数:

int a, b;
scanf("%d %d", &a, &b);

在这个例子中,"%d %d" 是一个格式控制符,它表示要读入两个整数,中间以空格隔开。&a 和 &b 分别是两个整型变量的地址,用于将读入的数据存储到这两个变量中。

除了常见的数据类型外,scanf() 还支持读入字符、字符串、布尔型、长整型等其他类型的数据。以下是一些常用的格式控制符及其用法:

格式控制符 作用 示例
%c 读入一个字符 scanf("%c", &ch);
%s 读入一个字符串,遇到空格或回车即停止 scanf("%s", str);
%d 读入一个十进制整数 scanf("%d", &num);
%f%lf 读入一个浮点数 scanf("%f", &x);
%o 读入一个八进制整数 scanf("%o", &num);
%x 读入一个十六进制整数 scanf("%x", &num);
%u 读入一个无符号十进制整数 scanf("%u", &num);
%ld 读入一个长整数 scanf("%ld", &num);
%lu 读入一个无符号长整数 scanf("%lu", &num);
%p 读入一个指针类型的值 scanf("%p", &ptr);
%hd 读入一个短整数 scanf("%hd", &num);
%hu 读入一个无符号短整数 scanf("%hu", &num);
%lf 读入一个双精度浮点数 scanf("%lf", &x);

需要注意的是,使用 scanf() 函数时应该确保输入数据的格式与指定的格式控制符相匹配,否则可能会导致程序出现错误或不按预期运行。另外,在读取字符型变量时要小心,因为 scanf() 函数无法区分回车符和空格符,如果输入了额外的回车符或空格符,它们也会被读入到字符型变量中。