fscanf与scanf
来源:互联网 发布:哪个洗衣店好 知乎 编辑:程序博客网 时间:2024/06/05 15:49
标准输入输出函数%[]和%n说明符的使用方法
scanf("%[abcd]", ptr);
abcd组成扫描列表。二是扫描字符集(scanset)。扫描字符集指的是结果字符集,例如上面的例子,结果字符集就是abcd。如果输入一个字符串“cbadkjf”,那么ptr得到的字符串是cbad,kjf三个字符都属于定界符,输入到k字符时输入字符串被截断,kjf三个字符被留在stdin里面。如果带有抑扬符,例如:
scanf("%[^abcd]", ptr);
扫描列表仍然是abcd,但扫描字符集是除abcd外的可输入字符。如果输入字符串“jksferakjjdf”,ptr得到的字符串是“jksfer”。如果想限制输入字符串的字符数量,可以象s说明符那样,在[]前面使用位域,例如:
scanf("[^abcd]", ptr);
这样结果字符串最多只能包含10个字符(除'\0'字符外)。
scanf("%[a-zA-Z]", ptr);
那么扫描列表由大小写各26个字母组成。少数编译器仍旧把这种情况下的减号视为扫描列表成员。
fscanf(fd,"%*[^\n]\n");//%*是虚读,没有存,只是让指针跳过了这个变量!
scanf("%d %d%n", &i, &j, &k);
如果输入434 6434,则k等于8,而scanf的返回值仍然为2。又如:
scanf("%c%n", &ch, &k);
输入“sbcdefdg”后,k等于1,而不是8,因为%c只取一个字符,%n输出的是有效字符数量。
printf("i=%d, j=%d\n%n", i, j, &k);
在i=343、j=123的情况下,k=12,同时%n不影响printf的返回值,其返回值仍然为12,而不是14。
==============================================================
这个用法是在H264 jm82参考代码上看到的,用来从解码器参数配置文件中读取配置参数,代码如下:
// read the decoder configuration file
if((fd=fopen(config_filename,"r")) == NULL)
{
snprintf(errortext, ET_SIZE, "Error: Control file %s not found\n",config_filename);
error(errortext, 300);
}
fscanf(fd,"%s",inp->infile);
fscanf(fd,"%*[^\n]");
fscanf(fd,"%s",inp->outfile);
fscanf(fd,"%*[^\n]");
fscanf(fd,"%s",inp->reffile);
fscanf(fd,"%*[^\n]");
对应的配置文件内容如下:
test.264
test_dec.yuv
test_rec.yuv
通过这种方式
inp->infile = "test.264"
inp->outfile = "test_dec.yuv"
inp->reffile = "test_rec.yuv"
而相应的配置文件中的一些注释则不会被读入,这是相当简便的用法,比起通过严格约定注释符并进行一个字符一个字符来解析,这种方式简单了许多!值得借鉴
引用地址:http://cid-91bd938aa4dc6162.spaces.live.com/Blog/cns!91BD938AA4DC6162!148.entry
- fscanf与scanf
- scanf与fscanf与sscanf
- sscanf,scanf,fscanf与正则表达式
- sscanf,scanf,fscanf与正则表达式
- scanf,sscanf,fscanf
- [转]scanf(), fscanf()的用法
- C中的scanf fscanf sscanf
- scanf、sscanf、fscanf的总结
- printf 与 fprintf、sprintf函数、fscanf与scanf函数 的区别
- java 中的fscanf/scanf String.format 实例
- scanf、printf、fscanf、fprintf、sscanf、sprintf等
- scanf/fscanf 的%[]和%n使用方法
- stdin、stdout & printf、scanf & fprintf、fscanf
- scanf,fscanf,sscanf的区别----整理
- linux下使用fscanf实现scanf
- scanf,fscanf,sscanf的区别----整理
- scanf/fscanf 的%[]和%n使用方法
- scanf/fscanf 的%[]和%n使用方法
- 业界资讯:白鹭引擎5.0发布,支持webassembly
- 小白的2017书单(一)生活
- 信号处理第六课:一个向量用一组基底来表达
- Yaf通过composer整合Smarty
- sqlserver数据库表的非主键字段插入数据时不重复
- fscanf与scanf
- java序列化
- Vue组件中的slot
- Spring配置中对静态资源的正确引用!
- linux 链接命令
- 用servlet记录用户访问次数
- spring框架依赖注入与控制反转
- CyclicBarrier的用法
- 蓝桥杯第六届决赛:四阶幻方