scanf 是 C 语言中的一个标准输入函数,主要用于从标准输入设备(通常是键盘)读取格式化的数据,并将其存储到相应的变量中。这个函数定义在 <stdio.h>
头文件中。
基本语法形式如下:
int scanf(const char *format, ...);
format:这是一个包含特殊格式说明符的字符串,它告诉
scanf
函数应该期望什么样的输入格式。例如%d
表示十进制整数,%f
表示浮点数,%c
表示单个字符等。可变参数列表:紧随
format
字符串之后的是与格式说明符对应的变量地址列表。每个格式说明符对应一个变量的地址,这样scanf
才能将读取的数据正确地写入这些变量所指向的内存空间。
例 1
#include <stdio.h> // 引入标准输入输出头文件,其中包含了scanf函数的声明
int main(void) { // 定义主函数
int number; // 声明一个整型变量number,用于存储从键盘读取的数字
printf("请输入一个整数: "); // 输出提示信息,让用户知道需要输入什么内容
// scanf函数在这里用于从标准输入(通常是键盘)获取用户输入的整数,并将其赋值给变量number
scanf("%d", &number); // "%d"是格式说明符,表示要读取一个十进制整数,"&"符号用来传递number变量的地址
// 确保用户输入已被正确读取并存储到number中后,可以进一步使用这个变量
printf("您输入的数字是: %d\n", number); // 使用printf输出读取到的数字
return 0; // 主函数返回0,表示程序正常执行结束
}
上述代码示例中:
首先引入了
stdio.h
头文件,因为scanf
和printf
函数都在此头文件中定义。在
main
函数内声明了一个整型变量number
,用于存储用户即将输入的整数。使用
printf
函数打印一条提示信息,告诉用户应当输入一个整数。使用
scanf
函数读取用户在键盘上输入的整数,"%d"
作为格式字符串指定读取整数类型的数据,并用&number
提供变量number
的地址,以便将数据存入该内存位置。最后,再次使用
printf
函数输出用户刚才输入的数字,以验证程序是否成功读取并存储了正确的值。main
函数通过返回0
来指示程序执行成功。
例 2
#include <stdio.h>
int main() {
int age;
char name[50];
printf("请输入您的年龄和姓名(空格分隔):\n");
scanf("%d %s", &age, name); // 这里 format 是 "%d %s",&age 和 name 分别是整型和字符数组的地址
printf("您输入的年龄是:%d,姓名是:%s\n", age, name);
return 0;
}
在这个例子中,程序会等待用户在键盘上输入一个整数和一个以空格分隔的字符串。scanf
根据指定的格式读取输入,并将整数部分存入 age
变量,字符串部分存入 name
数组。
注意事项:
scanf
在处理某些格式时可能会有安全性和效率问题,比如当输入的长度超过目标缓冲区大小时可能导致缓冲区溢出。用户输入的空白字符(空格、制表符、换行符等)会被
scanf
按照格式控制字符串的要求处理。例如,在上述例子中,%d
后面的空格意味着跳过任意数量的空白字符直到遇到非空白字符并开始读取整数。scanf
返回值是一个整数,表示成功读取并赋值给变量的数量,如果返回值小于预期,则可能是由于输入格式不符合要求或到达了文件尾(EOF)。
评论区