fscanf()函数从文件中读取数据时分隔符的问题

       最近在做实用算法实验的时候,遇到了从文件中读取数据并存储的问题,由于之前的C语言基本上是自学并且是为了考研而学的,所以文件方面的内容知之甚少,借着这个机会重新学习了下文件部分的内容,在解决实际问题的同时,补一补知识漏洞。

       文件方面的基础内容在任何一本C语言教程上面应该都能够找到,但是在涉及到实际用法的时候可能会有所偏差。

       首先,要了解的是fscanf()函数的说明和用法:以下两份解释结合起来应该能够较好的理解fscanf()函数的相关用法:

1、功 能: 从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。

用 法:int fscanf(FILE *stream, char *format,[argument...]);

int fscanf(文件指针,格式字符串,输入列表);

  for example:

  FILE*fp;

  chara[10];

  intb;

  doublec;

  fscanf(fp,"%s%d%lf",a,&b,&c)

  返回值:整型,数值等于[argument...]的个数

其中的format就是相当于正则表达式中的格式,即用什么样的格式来分隔文件中的信息。

2、

int fscanf ( FILE * stream, const char * format, ... );

描述:

从流中读取格式化的数据
从流中读取数据并根据参数格式将它们存储到附加参数指向的位置。
额外的参数应该指向格式化字符串中已经分配了相应格式说明符指定类型的对象。

参数:

stream

指向标识要从中读取数据的输入流的FILE对象。

format

包含格式字符串的C字符串,其格式与scanf中的格式相同

返回值:

成功时,函数返回成功填充的参数列表项数。 此计数可以匹配预期的项目数量,或者由于匹配失败,读取错误或文件结束的范围而减少(甚至为零)。
如果发生读取错误或在读取时达到文件结束,则设置正确的指示符(feof或ferror)。 而且,如果在任何数据可以被成功读取之前发生,则返回EOF。
如果发生编码错误解释宽字符,函数将errno设置为EILSEQ。
 

文件指针和输入列表都比较容易理解,但是格式字符串就相对来说有些麻烦,首先我们要明确的是,格式控制字符串的规则是有一些变化的,在读取文件的数据流输入得时候,空格,回车,Tab键和非法字符是能起到分隔符的效果的,当一次性需要赋值多个变量的时候,怎样进行格式控制就是需要考虑的问题了

以下两篇博客会让你豁然开朗(至少我豁然开朗了):

https://blog.csdn.net/mxgsgtc/article/details/13005675?utm_source=blogxgwz1

https://blog.csdn.net/scutcoder/article/details/47622359

这里是一篇关于scanf()控制字符的完整说明:

http://lib.csdn.net/article/c/25294

 

 

 

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值