当前位置: 首页 > 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.mrgr.cn/news/25351.html

相关文章:

  • FreeRTOS 项目剖析
  • 征稿啦!第 19 届「中国 Linux 内核开发者大会」重磅启动
  • C++——STL中的迭代器(Iterator)补充
  • 新品|瑞芯微RK3588工控机IPC8801适用AI算力、边缘计算、工业视觉
  • 1265:【例9.9】最长公共子序列 动态规划
  • 养宠浮毛严重怎么清理?希喂、范罗士、IAM宠物空气净化器真实测评
  • 企业私有云容器化架构运维实战
  • 看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
  • Tomact的基本使用
  • 论文笔记:基于LLM和多轮学习的漫画零样本角色识别与说话人预测
  • 浮点数在内存中的存储
  • html+css+js网页设计 旅游 龙门石窟4个页面
  • 2024抖音电商丰收嘉年华在攀枝花市盐边县举办
  • BrainSegFounder:迈向用于神经影像分割的3D基础模型|文献速递--Transformer架构在医学影像分析中的应用
  • 滑动窗口(2)_无重复字符的最长字串
  • day-54 求出最多标记下标
  • 萤石举办2024清洁机器人新品发布会 多维智能再造行业标杆
  • IDEA调用VPN接口超时,但ApiFox可成功调用接口
  • 基于元神操作系统实现文件复制
  • 关于 OceanBase 4.x 中被truncate的 table 不再支持进回收站的原因