[color=var(--weui-LINK)]scanf()函数 C语言stdio.h标准库中的scanf()函数,可以用于从标准输入流stdin读取格式化的输入,比如从键盘读取。 scanf()函数语法:int scanf( const char *fmt, ...)scanf()参数参数 描述
[color=var(--weui-LINK)]fmt 包含格式说明符的格式化字符串,主要用于解析输入流中的数据,并将读取到的值存储到下面这个参数指定的变量中
... 个数可变的参数,用于存储读取到的数据,一般格式为:&varName,其中varName通常为普通类型的变量scanf类型说明符[color=rgba(0, 0, 0, 0.9)]编辑自网络: 类型 描述
%c 单个字符
%d 整型,一般为int
%u 无符号整型
%o [color=var(--weui-LINK)]八进制
%x或%X 十六进制
%i 可识别正负号,及八进制和十六进制
%f 单精度浮点数
%lf [color=var(--weui-LINK)]双精度浮点数
%s 字符串
%lf 双精度浮点数
%hd 短整型
%ld 长整型
%lld long long整型
%e或%E 科学计数法
%g或%G 自动匹配%f或%e来表示浮点数
%[^...] 排除字符集宽度修饰符宽度修饰符,比如%2d可以用于指定读取整数时只读取至多3个字符宽度的数据,这在读取字符串时十分有用,可以避免读取的字符数大于缓冲区的大小,导致缓冲区溢出。注意,使用宽度修饰符后,被截断保留在缓冲区内的数据可能会影响后续的读取操作,具体可参考下方的实例代码。 scanf()对应的输入提示使用scanf()函数获取键盘上的输入的时候,可以使用空格、制表符tab键等将各个数据隔开。 scanf()返回值如果成功,则返回成功读取和存储的个数,如果只是部分成功,则返回成功读取和存储的个数,否则将返回一个EOF(这个值一般是一个负数)。 scanf()实例代码如下实例代码,使用scanf()函数用于从键盘上获取输入,其中获取字符串的时候,使用宽度修饰符修饰,避免缓冲区溢出: #include "stdio.h"
int main() {
printf("请输入一些内容,分别是整数、文字和浮点数,并使用空格隔开:");
int intNumber;
char str[6];
float floatNumber;
int num = scanf("%d %f %5s",&intNumber, &floatNumber, &str);
//第一次运行完之后,可以尝试将&floatNumber, &str两个位置对调,然后%f %5s也对调
//第三次编译运行之前,可以将%f改成%s,并将floatNumber类型修改为char数组
//经过三次的编译运行,就可以很清晰地看到宽度修饰符的作用和一些使用规范了
if(num > 0){
printf("读取输入成功,读取到的字符串为:%s\n",str);
printf("scanf()的返回值num为:%d\n",num);
}else{
printf("读取失败!");
}
return 0;
}代码编译运行,得到输出并输入: 请输入一些内容,分别是整数、文字和浮点数,并使用空格隔开:1 0.1 Hello,World
读取输入成功,读取到的字符串为:Hello
scanf()的返回值num为:3免责声明:内容仅供参考,不保证正确性。 |