scanf的用法
参考博客:https://blog.csdn.net/Believe_jt/article/details/129344264
1 限定读取长度
#include <stdio.h>
int main() {
int n;
float f;
char str[23];
scanf("%2d", &n);
scanf("%*[^\n]"); scanf("%*c"); //清空缓冲区
scanf("%5f", &f);
scanf("%*[^\n]"); scanf("%*c"); //清空缓冲区
scanf("%19s", str);
printf("n=%d, f=%g, str=%s\n", n, f, str);
return 0;
}
2 读取指定字符集
#include <stdio.h>
int main(){
char str[30];
scanf("%[abcd]", str);
printf("%s\n", str);
return 0;
}
字符集范围简写
#include <stdio.h>
int main(){
char str[30];
scanf("%[a-zA-Z]", str); //只读取字母
printf("%s\n", str);
return 0;
}
读取不包含字符集
#include <stdio.h>
int main(){
char str1[30], str2[30];
scanf("%[^0-9]", str1);
scanf("%*[^\n]"); scanf("%*c"); //清空缓冲区
scanf("%[^\n]", str2);
printf("str1=%s \nstr2=%s\n", str1, str2);
return 0;
}
读取一行
#include<stdio.h>
int main()
{
char str[21];
scanf("%[^0-9\n]", str);
printf("%s", str);
return 0;
}
scanf() 控制字符串的完整写法为:
%{*} {width} type
其中,{ } 表示可有可无。各个部分的具体含义是:
type表示读取什么类型的数据,例如 %d、%s、%[a-z]、%[^\n] 等;type 必须有。
width表示最大读取宽度,可有可无。
*表示丢弃读取到的数据,可有可无。