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

本文共 1267 字,大约阅读时间需要 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函数的使用方法。曾经自己敲代码解析这样的文件,费力还不讨好,得出的结果还不准确。哎 仅仅能感叹我太弱了,以后还得好好学习!!!!

转载于:https://www.cnblogs.com/mengfanrong/p/3919969.html

你可能感兴趣的文章
并发队列ConcurrentQueue
查看>>
HDU 4198 Quick out of the Harbour(BFS+最小优先队列)
查看>>
Ubuntu Server安装telnet服务时"Unable to locate package telnetd"解决方法
查看>>
掷骰子
查看>>
sqlmap详解
查看>>
2016年7月笔记
查看>>
开源手机自动化测试框架iQuery入门教程(三)
查看>>
利用php Jpgraph绘制柱形图
查看>>
[转载]C-Style Character Strings
查看>>
05.UIDynamic
查看>>
php正确率比较高的安装教程
查看>>
常见26个jquery使用技巧详解(比如禁止右键点击、隐藏文本框文字等)
查看>>
基于ARM+LINUX的无线视频采集系统设计----------项目整体介绍
查看>>
python log
查看>>
迭代器,递归,函数名的使用,闭包
查看>>
DOM结构学习备忘
查看>>
关于idea优化的博客(分享)
查看>>
BZOJ1015[JSOI2008]星球大战starwar[并查集]
查看>>
BZOJ 1415: [Noi2005]聪聪和可可 [DP 概率]
查看>>
信息资源管理第一章知识结构
查看>>