C语言:从txt中逐行读取文本,提取其中的特殊数据
在Matlab中几行正则化的操作,C中尝试实现。


问题描述

在大量的txt中提取其中的特定数据
例如:

  Labeled Markers (4):Marker #0: (1328.75, 11944.2, 2341.06)Marker #1: (1369.61, 12198.9, 2329.24)Marker #2: (1463.51, 12004.9, 2321.44)Marker #3: (1217.63, 12047, 2334.84)Devices (0):Force Plates: (0)Eye Trackers: (0)

其中,想要提取Marker #0:后面的三个坐标信息


实现过程

按照:打开文件、逐行读取、判断字符是否为Marker、读取其中的数字的思路进行
需要的函数有fopenfgetsstrstratofmemset

注意:在VS2019中使用fopen会报错,在文件开头添加一句

#pragma warning(disable:4996);

即可解决。

fgets的声明 :

char *fgets(char *str, int n, FILE *stream)

str – 这是指向一个字符数组的指针,该数组存储了要读取的字符串。
n – 这是要读取的最大字符数(包括最后的空字符)。通常是使用以 str 传递的数组长度。
stream – 这是指向 FILE 对象的指针,该 FILE 对象标识了要从中读取字符的流。

如果使用循环,fgets的指针在指到 ‘\0’ 后会自动移到下一行,这样可以实现逐行读取的功能。

如何判断该行文本存在目标数据
对比该行的前几个字符串是否是目标数据前的字符串,通常情况下,如果这个txt生成时是按照固定格式打印的,那么这个字符串有固定的格式。

源代码如下:

 char num;char str_a[20000];int j = 0, num_k = 0;// 文件打开FILE* fin;fin = fopen("E:/001.txt", "r");for (int i = 0; i < 1000; i++){fgets(str_a, 80, fin);char buf1[50];// 检测到Marker字符串,开始读取if (strstr(str_a, "      Marker") != NULL){printf("%s\n", str_a);int a_j = 0, k = 0;char str2 = '(';// 遍历该行字符串for (int a_i = 0; str_a[a_i] != '\0'; a_i++) {// 如果为空,空字符与字符比较会引发异常if (str_a[a_i] != ' ') {if (str_a[a_i] == str2) {k = 1; // k=1,开始读数}}// 判断开始读数、是否为数、是否为小数点if (k == 1 && str_a[a_i] >= '0' && str_a[a_i] <= '9' || str_a[a_i] == '.') {buf1[a_j] = str_a[a_i];a_j++;}// 判断开始读数、遇到,或)停止if (k == 1 && (str_a[a_i] == ',' || str_a[a_i] == ')')) {// char转为double类型,buf1置零Num[num_k] = atof(buf1);memset(buf1, 0, sizeof(buf1));a_j = 0;num_k++;}}buf1[a_j] = '\0';}Sleep(1);}

总结

初学C语言,最近的任务是把Matlab中已经写好的代码迁移到C中,写写blog对比Matlab和C实现的不同。

C语言 从txt文件中提取特定的数据相关推荐

  1. Python从txt文件中提取特定数据

    本段代码用于,想要从一段txt文件中只提取目标数据的情况. 代码: def get_data(txt_path: str = '', epoch: int = 100, target: str = ' ...

  2. 在csv文件中提取特定的数据做图-以天气为例子

    前言:这是在<python入门>中的一个例子,写成文章,作为学习的复盘. 现在有这么一份天气数据,需要将画出最高温和最低温的曲线图. 前期的基础知识: CSV文件 CSV是最通用的一种文件 ...

  3. linux提取fasta文件的id,从大的fasta文件中提取特定的fasta序列

    我想使用以下脚本从大的fasta文件中提取特定的fasta序列,但输出为空.从大的fasta文件中提取特定的fasta序列 transcripts.txt文件包含我想从assembly.fasta到s ...

  4. python在txt文件中提取段落_如何使用python从.txt文件中提取段落?

    我需要从一个.txt文件中提取段落,其中每个段落都以字母摘要开头,如下所示.在 文摘:大规模多输入多输出天线系统.毫米波通信和超密集网络被广泛认为是 促进5G开发和部署的三大关键因素 系统.我们提出了 ...

  5. python提取文件指定列_如何从csv文件中提取特定列并使用python绘图

    我有一个csv文件,其中包含以下几行数据:# Vertex X Y Z K_I K_II K_III J 0 2.100000e+00 2.000000e+00 -1.000000e-04 0.000 ...

  6. matlab查找替换指令,使用matlab GUI在.txt文件中编辑特定数字使用搜索/替换

    使用matlab GUI在.txt文件中编辑特定数字使用搜索/替换 我有一堆不同的模板.txt文件,我想由Matlab中的用户访问.这些模板看起来像这样,但是有一些主要的区别,我将解释: LOAD B ...

  7. 如何用c语言从txt文件中读取数据

    用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作. 一.打开文件: FILE *fopen(const char *filename, const char *mode) ...

  8. 【python学习】批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件

    批量读取Materials Studio的sdf文件,从文件中提取特定信息并按列存储在CSV文件 Materials Studio在执行dmol3模块中结构优化任务时,任务结束后会产生一系列的输出文件 ...

  9. ffmpeg-从mp4、flv、ts文件中提取264视频流数据

    ffmpeg-从mp4.flv.ts文件中提取264视频流数据 main.c #include <stdio.h> #include <libavutil/log.h> #in ...

最新文章

  1. 余额 微信钱包图片_微信储值会员卡小程序,微信会员卡功能系统。
  2. java设置native内存大小_如何定位native内存泄露问题?
  3. python之numpy
  4. USB连接TF卡 SD卡硬件电路
  5. HDU 4336 概率DP 状压
  6. 微博多尺度序列推荐算法实践
  7. C#不登录电脑启动程序
  8. Oracle分配内存的基本单位:Granule(粒度)
  9. 深入理解JavaScript (5) —— 闭包
  10. sklearn决策树特征权重计算方法
  11. PWM的占空比、分辨率
  12. python导入mysqldb_Python导入MySQLdb库
  13. keras 入门教程(一)
  14. 不仅老赖处处受限,连老赖的家人都要处处受限
  15. python使用pyecharts绘制地图
  16. 我和Python的Py交易》》》》》》函数
  17. react 3d模型_制作3D React Carousel
  18. PYthon调整音乐音量,生成空白音乐
  19. java.lang.NoSuchFieldError: No static field id_sl_hlry of type I in class Lcom/bsoft/mob/common/R$id
  20. PHP入门-02|PHP下载安装配置教程

热门文章

  1. php中如何过滤关键字,PHP - 过滤关键字
  2. 程序员必须了解的知识点——你搞懂mysql索引机制了吗?
  3. 为什么说买腾讯云服务器通过代理商购买更划算
  4. 卡尔曼滤波最完整公式推导
  5. 基于增强现实的室内导航系统如何设计架构
  6. win7添加ftp到计算机,技术编辑帮你win7系统FTP地址添加到资源管理器的收藏夹下的设置步骤...
  7. 【云原生之Docker实战】使用docker部署DokuWiki知识库系统
  8. excel调用python编程-超简单:用Python让Excel飞起
  9. 深度讲解VIEWPORT和PX是什么
  10. 最新 lineageos 编译过程 详细过程