scanf
是 C 语言中的一个标准库函数,用于从标准输入(通常是键盘)读取格式化的输入。这个函数是 C 语言标准库 <stdio.h>
的一部分。
int scanf(const char *format, ...);
format
是一个格式字符串,指定了输入数据的格式。...
是可变参数列表,用于接收输入的数据。scanf
使用特定的格式说明符来读取不同类型的输入数据。常见的格式说明符包括:
%d
或 %i
:读取整数。%f
:读取浮点数。%c
:读取字符。%s
:读取字符串(直到遇到空白字符)。%lf
:读取双精度浮点数。#include <stdio.h>
int main() {
int number;
float decimal;
char letter;
char text[100];
printf("请输入一个整数: ");
scanf("%d", &number);
printf("请输入一个浮点数: ");
scanf("%f", &decimal);
printf("请输入一个字符: ");
scanf(" %c", &letter); // 注意前面的空格,用于跳过任何前导空白字符
printf("请输入一行文本: ");
scanf("%s", text);
printf("\n您输入的数据是:\n");
printf("整数: %d\n", number);
printf("浮点数: %.2f\n", decimal);
printf("字符: %c\n", letter);
printf("文本: %s\n", text);
return 0;
}
%s
读取字符串时,必须确保目标数组有足够的空间来存储输入的数据,否则可能会导致缓冲区溢出,这是一个安全风险。scanf
不会检查输入是否符合预期的格式,因此在使用输入之前应该进行验证。%c
格式说明符会读取任何字符,包括空白字符。如果想要跳过前导空白字符,可以在 %c
前面加一个空格。scanf
函数返回成功读取并赋值的输入项的数量。如果输入不符合预期的格式,或者遇到文件结束标志(EOF),则返回值会小于预期的数量。scanf
会停止读取并留下未初始化的变量。解决方法是检查 scanf
的返回值,并在必要时重新请求输入。%99s
来限制字符串的最大长度,以防止溢出。%c
前加空格或使用 %s
来跳过空白字符。在使用 scanf
时,应该注意这些细节,以确保程序的正确性和安全性。
领取专属 10元无门槛券
手把手带您无忧上云