fscanf()函数具体解释

fscanf()函数具体解释

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

fscanf()函数具体解释此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

曾经解析有规律的文件的时候要么用正則表達式,要么就是傻傻的自己敲代码来解析有规律的文件。今天突然发现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函数的使用方法。曾经自己敲代码解析这样的文件,费力还不讨好,得出的结果还不准确。哎 仅仅能感叹我太弱了,以后还得好好学习!!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117988.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • EasyPusher/EasyDarwin/EasyPlayer实现手机直播版本及效果整理「建议收藏」

    EasyPusher/EasyDarwin/EasyPlayer实现手机直播版本及效果整理「建议收藏」EasyPusher手机直播实现功能最近很多EasyDarwin爱好者提出了手机移动端直播的功能需求,尤其是如何做出像映客这样能够快速出画面播放的效果,经过一段时间的移动端和服务端的优化,EasyPusher直播推送+EasyDarwin流媒体服务器+EasyPlayer客户端播放已经非常好实现了这些需求,EasyPusher编码推送+EasyDarwin公网传输+EasyPlayer播放整个流程,

  • 装水的容器大全_盛水的容器什么最好

    装水的容器大全_盛水的容器什么最好原题链接给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:he

  • webpack配置文件_webpackconfig.js详解

    webpack配置文件_webpackconfig.js详解前言上一篇文章我们使用webpack打包成功了,但是每次都要自己手动输入打包的文件地址和打包到哪里去的地址,非常麻烦,所以这里介绍使用配置文件进行打包webpack.config.js首先我们创

  • java之模糊查询「建议收藏」

    java之模糊查询「建议收藏」1.场景还原由于项目中有很多地方设置了搜索框,所以搜索框之模糊查询势在必得;今晚笔者将详细讲解java之模糊查询的细节及要点,希望能给大伙带来启发。2.实现方案后台代码:①UserInfo实体类的定义publicclassUserInfo{privateStringusername;privateIntegerage;pr

  • 什么是跨域及怎么解决跨域问题?[通俗易懂]

    什么是跨域及怎么解决跨域问题?[通俗易懂]什么是跨域?这篇博文解释的挺清楚,我直接引用https://blog.csdn.net/lambert310/article/details/51683775跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。不明白没关系,举个栗子:http://www.123.com/i…

  • 图标变成了一张白纸_电脑图标是白纸形式但能打开

    图标变成了一张白纸_电脑图标是白纸形式但能打开大家好,我是波导终结者。WIN10到现在也有些年头了,虽然好的不学学坏的,天天搞强制升级有些烦人,有时候新版本的BUG也比较致命,但是整体的性能,功能和稳定性上还是有飞跃性的提升。其实WIN10自带不少实用工具,而且兼容性和稳定性没得说,很多时候我们可以不必寻找第三方工具,省了很多钱,也提高了不少效率。今天就一起来看看吧。WIN10自带截图工具WIN10自带截图工具,虽然肯定不比专业的截图工具强,…

    2022年10月19日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号