- scanf 从控制台输入 fscanf 从文件输入 sscanf 从指定字符串输入
- scanf
- 用法为
int
scanf
(
const
char
* restrict format,...);
- scanf 是从标准输入读
- scanf一般情况下是碰到空格,制表符以及换行作为输入的结束
- 支持正则表达式 格式为 %[]
- []内是匹配的字符,^表示求反集,当遇到非集合内的字符时立即终止输入
- [a-z] 输入指定范围的小写字母,遇到非法字符立即终止
- [0-9] 输入指定范围的数字,遇到非法字符立即终止
- %[^a-z] 输入不包括指定字符的字符
- %*[a-z0-9] * 表示过滤满足条件的字符,也就是跳过满足条件的字符,其后一定要有新的%语句,否则无法读入
- fscanf
- 用法为 int fscanf(文件指针,格式字符串,输入列表);
- 返回值为读入的变量个数
- 支持的正则表达式与scanf相同
- sscanf()
int year,month,day; scanf("%d-%d-%d",&year,&month,&day) ; cout<<year<<" "<<month<<" "<<day<<endl; //输入 2020-1-10 输出 2020 1 10
int income; scanf("%*[^0-9]%d",&income); cout<<income; // 输入 : Today‘s revenue is 3000 输出 : 3000 // %*[0-9]过滤了前面的非数字
char v1[100],v2[100]; scanf("%[^\n]%*c%[^\n]",v1,v2); cout<<v1<<" "<<v2<<endl; //输入 : china // USA
//输出; china USA //%[^\n] 可以读入一行,后面的%*c是为了过滤掉换行符
原文地址:https://www.cnblogs.com/cyj1258/p/12178466.html
时间: 2024-10-11 10:47:26