scanf sscanf fscanf
Posted cyj1258
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf sscanf fscanf相关的知识,希望对你有一定的参考价值。
- 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("%[^ ]%*c%[^ ]",v1,v2); cout<<v1<<" "<<v2<<endl; //输入 : china // USA
//输出; china USA
//%[^
] 可以读入一行,后面的%*c是为了过滤掉换行符
以上是关于scanf sscanf fscanf的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段