简单分享-获取.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;
}
运行结果
文件对比结果
相关文章:

简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言
简单分享-获取.txt文件内数据 文件内数据逗号分隔 分隔符 C语言 数据存储到文件中,把文件数据读取到数组,方便数据处理。 # include <stdio.h> # include <stdlib.h> # include <string.h>#define DATANUM 307200 //数组个数 int ma…...

从0开始手把手带你入门Vue3
前言 本文并非标题党,而是实实在在的硬核文章,如果有想要学习Vue3的网友,可以大致的浏览一下本文,总体来说本篇博客涵盖了Vue3中绝大部分内容,包含常用的CompositionAPI(组合式API)、其它CompositionAPI以及一些新的特…...

C# USB通信技术(通过LibUsbDotNet库)
文章目录 1.下载LibusbDotNet库2.引入命名空间3. 实例化USB设备4.发送数据5.关闭连接 1.下载LibusbDotNet库 右击项目选择管理NuGet程序包在弹出的界面中搜索LibusbDotNet,然后下载安装。 2.引入命名空间 using LibUsbDotNet; using LibUsbDotNet.Main;3. 实例化…...
常用Java API
1 字符串处理 1.1 String 类 String 类是 Java 中不可变的字符序列。它提供了以下常用方法: length():返回字符串的长度。 charAt(index):返回指定索引处的字符。 substring(startIndex, endIndex):返回从 startIndex 到 endI…...

使用opencv优化图片(画面变清晰)
文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强…...

Java 回顾方法的定义
一、方法的定义 1.修饰符(public static…)详见博客【Java 方法的定义】 2.返回值(int, double, char[],…., void)详见博客【Java 方法的定义】 3. break:跳出switch 结束循环,详…...

网络安全产品认证证书大全(持续更新...)
文章目录 一、引言二、《计算机信息系统安全专用产品销售许可证》2.1 背景2.2 法律法规依据2.3 检测机构2.4 检测依据2.5 认证流程2.6 证书样本 三、《网络关键设备和网络安全专用产品安全认证证书》3.1 背景3.2 法律法规依据3.3 检测机构3.4安全认证和安全检测依据标准3.5 认证…...

win10 安装多个版本的python
1,安装python3.9 和python3.10 2, 安装完之后分别打开两个版本的Python的安装目录(第一层目录),把pythonw.exe分别重命名为pythonw_39.exe和pythonw_310.exe,把python.exe复制一份,并分别重命名为python_…...
【ORACLE】数据备份
Oracle数据库备份是确保数据安全和可靠性的重要环节。Oracle提供了多种备份方法,包括冷备份、热备份、逻辑备份(如使用expdp和impdp)以及使用RMAN(Recovery Manager)进行物理备份。 冷备份:在数据库关闭的状…...

[Golang] goroutine
[Golang] goroutine 文章目录 [Golang] goroutine并发进程和线程协程 goroutine概述如何使用goroutine 并发 进程和线程 谈到并发,大多都离不开进程和线程,什么是进程、什么是线程? 进程可以这样理解:进程就是运行着的程序&…...
【前端】JavaScript高级教程:函数高级——执行上下文与执行上下文栈
文章目录 遍历提升与函数提升执行上下文执行上下文栈(1)执行上下文栈(2)面试题 遍历提升与函数提升 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>01_变量提升与函数提升</title> </head&…...
【阻抗管传递函数法】频域声压,即复声压是指什么
在阻抗管传递函数法中提到的“频域声压数据”,是通过对传声器测得的“时域声压信号”进行快速傅里叶变换(FFT)后得到的结果。 具体来说,这些频域声压数据指的是传声器测量的声压随时间变化的数据,经过傅里叶变换后&am…...
Python青少年简明教程:类和对象入门
Python青少年简明教程:类和对象入门 Python支持多种编程范式(programming paradigms),即支持多种不同的编程风格和方法。初学者开始重点学习关注的编程范式,一般而言是面向过程编程和面向对象编程。面向过程编程&#…...

【vue+el-table】表格操作列宽度跟随按钮个数自适应, 方法封装全局使用
效果图 以上图片分别代表不同用户权限下所能看到的按钮个数, 操作列宽度也会自适应宽度, 就不会一直处于最大宽度, 导致其他权限用户看到的页面出现大量留白问题. 目录 解决方法解决过程中可能出现的问题width赋值时为什么不放update()中btnDom为什么不能直接调用forEach为…...

OpenAI发布全新o1 AI模型具备推理能力
🦉 AI新闻 🚀 OpenAI发布全新o1 AI模型具备推理能力 摘要:OpenAI推出新AI模型o1,具备推理能力,旨在比人类更快地解决复杂问题。o1与o1-mini版本同时发布,前者训练成本较高,但在编程和多步骤问…...
如何在本地部署大语言模型
近年来,随着大语言模型(如GPT、BERT等)的迅速发展,越来越多的开发者和研究人员希望在本地环境中部署这些强大的模型,以便用于特定的应用场景或进行个性化的研究。本文将详细介绍如何在本地部署大语言模型,涵…...

秒懂:环境变量
前言 1.Linux当中70%以上的命令程序都是用C语言写的 2.执行命令程序和运行自己写的程序没有任何区别 3.自己程序运行必须要带路径(绝对/相对都可) 4. 系统指令可带可不带(带不要瞎带) 变量具有全局特性是…...
使用 @Param 注解标注映射关系
目录 1. 场景描述 2. SQL语句 3. 方法定义 4. Param注解的使用 5. 总结 在开发过程中,我们经常需要在Java应用程序中执行数据库操作,尤其是更新操作。在Spring Data JPA框架中,我们可以使用原生SQL语句来执行这些操作,并通过…...

Java学习中在打印对象时忘记调用 .toString() 方法或者没有重写 toString() 方法怎么办?
在 Java 编程中,toString() 方法对于调试、日志记录以及打印对象信息至关重要。然而,许多初学者在打印对象时可能会忘记调用 .toString() 方法,或者在自定义类中没有重写 toString() 方法,这可能导致输出结果不符合预期。 一、Ja…...

如何评估一个RAG(检索增强生成)系统-上篇
最近项目中需要评估业务部门搭建的RAG助手的效果好坏,看了一下目前业界一些评测的方法。目前分为两大类,基于传统的规则、机器学习的评测方法,基于大模型的评测方法。在这里做一些记录,上篇主要做评测方法的记录,下篇会…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...