博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fscanf()函数具体解释
阅读量:7169 次
发布时间:2019-06-29

本文共 1212 字,大约阅读时间需要 4 分钟。

曾经解析有规律的文件的时候要么用正則表達式,要么就是傻傻的自己敲代码来解析有规律的文件。今天突然发现c的库函数中有一个现成的能够解析有规律的文件的函数,就是fscanf()函数。难过哎 曾经自己做了这么多无用功,在这里具体解析一下fscanf函数:

fscanf()函数(有点像正則表達式):

功 能: 从一个流中运行格式化输入,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就是相当于正則表達式中的格式,即用什么样的格式来分隔文件里的信息。光说不好理解,一下用一个样例来说明详细怎么用:

首先我有一个data。txt的文件中面的数据格式例如以下:

2,50,41,w,20.585828

4,52,51,r,52.012547

.........................

 很多条类似的记录,都是以,来分隔的

.......................

我实现的功能就是把上面文件里的数据的五个字段赋值给对应的五个变量,而且输出这些变量的值。实现的程序例如以下:

#include<stdio.h>

#include<stdlib.h>
int main()
{
  int fd;
  long dev;
  long offset;
  long length;
  char ch;
  double ts=0.000000;
  if((fd=fopen("/home/haixian/ceshi/data.txt","r"))<0)
   {
     printf("open the file is error!\n");
     exit(0);
   }
  lseek(fd,0,SEEK_SET);
  
  
  while(5==fscanf(fd,"%ld,%ld,%ld,%c,%lf\n",&dev,&offset,&length,&ch,&ts))
  {在这里就是第二个參数指定分隔參数的格式,在这里使用的是,来分隔。这样就非常easy的获取了记录的各个字段的值并不须要自己编写函数来进行解析什么的。
     printf("%ld,%ld,%ld,%c,%lf\n",dev,offset,length,ch,ts);
  }
close(fd);
return 0;
}

通过上面的样例能非常好的理解fscanf函数的使用方法。曾经自己敲代码解析这样的文件,费力还不讨好,得出的结果还不准确。哎 仅仅能感叹我太弱了,以后还得好好学习!!!!

你可能感兴趣的文章
python拆包
查看>>
uva 10878 - Decode the tape
查看>>
7、jmeter-定时器介绍与使用
查看>>
购物商城Web开发第十天
查看>>
课后作业2~
查看>>
网页中如何使用一些特殊字体
查看>>
JAVA多线程和并发基础面试问答
查看>>
Tomcat与Nginx的整合
查看>>
【转】一步一步学Linq to sql(五):存储过程
查看>>
ASE加、解密
查看>>
Linux不在显示器上方总是显示企鹅
查看>>
继承与多态 动手动脑
查看>>
java中的注解(二)
查看>>
Luis创建与发布
查看>>
Linux 系统内核空间与用户空间通信
查看>>
spring mvc 程序
查看>>
mysqlbinlog -v CHANGE MASTER TO
查看>>
Jmeter===Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍(转)
查看>>
thrift-TFileTransport
查看>>
【SSH网上商城项目实战28】使用Ajax技术局部更新商品数量和总价
查看>>