📅  最后修改于: 2023-12-03 15:05:05.190000             🧑  作者: Mango
scanf()
简介scanf()
是C语言中的标准输入函数,用于从标准输入设备(通常是键盘)读取格式化输入,并将结果保存到指定的变量中。它可以读取各种类型的数据,包括整数、浮点数、字符、字符串等。
int scanf(const char *format, ...);
其中,format
表示格式化字符串,用于指定输入需要满足的格式;省略号(...
)表示各种可以传递的参数,对应 format
中的格式化字符串中的占位符。
scanf()
函数使用格式化字符串来指定输入格式。格式化字符串由常规字符和格式指示符组成。常规字符表示必须输入的字符,格式指示符用于表示需要输入的数据类型和数据格式。
以下是常见的格式指示符:
| 格式指示符 | 说明 |
|----------|---------------|
| %d
| 十进制整数 |
| %f
| 浮点数 |
| %c
| 字符 |
| %s
| 字符串 |
| %p
| 指针 |
| %x
| 十六进制整数 |
| %o
| 八进制整数 |
| %e
| 指数计数法浮点数 |
| %g
| 选择 %f
或 %e
格式 |
下面是一个简单的示例,用于从用户输入中读取一个整数和浮点数,并输出到控制台:
#include <stdio.h>
int main() {
int num;
float f;
printf("Enter an integer and a float separated by space: ");
scanf("%d %f", &num, &f);
printf("You entered integer: %d\n", num);
printf("You entered float: %f\n", f);
return 0;
}
在上面的示例中,我们使用了两个格式化字符串 %d
和 %f
分别表示整数和浮点数。&num
和 &f
分别表示将输入的整数和浮点数存储到 num
和 f
变量的地址中。
在使用 scanf()
函数时需要注意以下几点:
%ns
格式指示符,其中 n
表示缓冲区大小。scanf()
函数会读取输入缓冲区中的所有字符,包括换行符(\n
),因此需要注意输入时是否包含多余的空格或换行符。scanf()
函数在读取到指定格式化字符串中的值后才会返回,因此可能会出现阻塞等待输入的情况。为了避免这种情况,可以考虑使用非阻塞 IO 或使用多线程的方式实现异步读取。