当前位置: 首页 > news >正文

简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言

简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言


数据存储到文件中,把文件数据读取到数组,方便数据处理。

# include <stdio.h>
# include <stdlib.h>
# include <string.h>#define DATANUM 307200 //数组个数 
int main() {unsigned short  array[DATANUM];   FILE *file;file = fopen("data.txt", "r"); // 替换为您的文件名 在该.C在文件夹下  long int position =0;int index = 0,t=0;if (file == NULL) {perror("无法打开文件");return EXIT_FAILURE;}char buffer[100000]; //获取文件字符串 while (fgets(buffer, sizeof(buffer), file)) {int k=0;long recodestart=0; 
/*
当调用strtok()时,它会查找输入字符串中第一个出现的分隔符,并将其替换为\0(空字符),从而结束当前标记。
每次成功调用后,strtok()返回指向被分割出的子字符串的指针。如果没有更多可提取的子字符串,则返回NULL。
第一次调用时,提供待分解的字符串。
*/ char *token = strtok(buffer, ",");   //如果文件分隔符是空格把“,”换成“ ”就好while ( index < DATANUM) { //token != NULL &&if(token != NULL) // {if(t==1){t=0;index=index-1; //如果buffer取字符串刚好取到数据的一半,则存储的数组需要抛弃上一个数据 ,例如:数据65535,buffer最后只取到65,数组就会保存65。这个数组就是异常的,需要去掉。  }}array[index++] = atoi(token);token = strtok(NULL, ",");if(token == NULL)    //如果采集不到分隔符号“,”返回NULL {if(buffer[99998] != NULL)  //buffer[99999]='\0' ,buffer最后取字符如果不是分隔符“,” ,则需要往后退,确保下次取的是完整的数据 {while(buffer[99998-k] != NULL){k++;printf("buffer[99998-%d]=%c\n",k,buffer[99998-k]);//用于调试可屏蔽 }t=1; //如果buffer取字符串刚好取到数据的一半,则存储的数组需要抛弃上一个数据 ,例如:数据65535,buffer最后只取到65,数组就会保存65。这个数组就是异常的,需要去掉。 }elsek=0;printf("k=%d ",k);   //用于调试可屏蔽 position = ftell(file);  //查看文件指针位置  //用于调试可屏蔽 printf("F=%ld ",position);//用于调试可屏蔽 recodestart += (99999-k);   fseek(file, (long)(recodestart), SEEK_SET);//将文件指针移到指定位置 position = ftell(file); //用于调试可屏蔽 printf("E=%ld\n",position);//用于调试可屏蔽 fgets(buffer, sizeof(buffer), file);//从当前文件指针位置获取1000000字符到buffer  token = strtok(buffer, ","); //提供待分解的字符串 k=0;}}// 可以在这里对array进行进一步处理,例如打印或计算等}fclose(file);
///
//将采集的数组打印出来,用文件对比工具对比,数组是否正确 
//以下代码用于调试可屏蔽 
///   int i=0;FILE *destFile = fopen("data2.txt", "w");  //创建.ini文件 if (destFile == NULL) {perror("Error opening destination file");  //创建文件失败提示 return EXIT_FAILURE;}for(i=0;i<DATANUM;i++){fprintf(destFile, "%d,",array[i]); }fclose(destFile); //关 printf("complete\n");  return EXIT_SUCCESS;
}

运行结果
在这里插入图片描述
文件对比结果
在这里插入图片描述

http://www.lryc.cn/news/436717.html

相关文章:

  • 从0开始手把手带你入门Vue3
  • C# USB通信技术(通过LibUsbDotNet库)
  • 常用Java API
  • 使用opencv优化图片(画面变清晰)
  • Java 回顾方法的定义
  • 网络安全产品认证证书大全(持续更新...)
  • win10 安装多个版本的python
  • 【ORACLE】数据备份
  • [Golang] goroutine
  • 【前端】JavaScript高级教程:函数高级——执行上下文与执行上下文栈
  • 【阻抗管传递函数法】频域声压,即复声压是指什么
  • Python青少年简明教程:类和对象入门
  • 【vue+el-table】表格操作列宽度跟随按钮个数自适应, 方法封装全局使用
  • OpenAI发布全新o1 AI模型具备推理能力
  • 如何在本地部署大语言模型
  • 秒懂:环境变量
  • 使用 @Param 注解标注映射关系
  • Java学习中在打印对象时忘记调用 .toString() 方法或者没有重写 toString() 方法怎么办?
  • 如何评估一个RAG(检索增强生成)系统-上篇
  • rust解说
  • Elasticsearch 开放 inference API 为 Hugging Face 添加了原生分块支持
  • Jenkins部署若依项目
  • ELK笔记
  • 计算机网络 --- 计算机网络的分类
  • 三维动画|创意无限,让品牌传播更精彩!
  • 欧零导航系统正式版,功能强大,可直接运营
  • 了解变压器耦合电压开关 D类放大器
  • openssh移植:精致的脚本版
  • 3C电子胶黏剂在手机制造方面有哪些关键的应用
  • Oracle数据库中的动态SQL(Dynamic SQL)