C语言处理excel

article/2025/6/4 23:16:23

思路来源:https://blog.csdn.net/hongzhen91/article/details/57422897

目录

  • 1 写
  • 2 读
    • 先看 代码!
    • 结果分析可知

1 写

.csv 是 excel 后缀,跳跃间隔符是 ‘,’

	FILE *fp ;fp = fopen("./test.csv","w") ; // 写 for (i=0 ; i<4 ; i++)fprintf(fp,"%c,%d,%d\n", chy[i], data[i], d2) ;fclose(fp);

2 读

指定位置读数,如倒序读数,从末尾向前 ( 向着开头 ) 读数!

先看 代码!

倒序读 最后一行的数据

#include<bits/stdc++.h> 
#define num 20
using namespace std;void writeExcel()
{char chy[4]={ 'x' ,'a' ,'h','w' }, ch, t;int data[4]={ 1 , 3 , 6 ,9	}, d1 = -1, d2 = 5;int i ;FILE *fp ;fp = fopen("./test.csv","w") ; // 写 for (i=0 ; i<4 ; i++)fprintf(fp,"%c,%d,%d\n", chy[i], data[i], 5) ;fclose(fp);cout << "读:" << endl; fp = fopen("./test.csv","r") ; // 读 cout << "d1 = " << d1 << endl;cout << "ftell(fp) = " << ftell(fp) << endl;fseek(fp, 0L, 2); // 末尾 cout << "ftell(fp) = " << ftell(fp) << endl << endl;fseek(fp, -3L, 1); // 向前移动 3L cout << "ftell(fp) = " << ftell(fp) << endl;fscanf(fp, "%d", &d1); // 5cout << d1 << endl;cout << "ftell(fp) = " << ftell(fp) << endl << endl;fseek(fp, -3L, 1);cout << "ftell(fp) = " << ftell(fp) << endl;fscanf(fp, "%d", &d1); // 9cout << d1 << endl;cout << "ftell(fp) = " << ftell(fp) << endl<< endl;fscanf(fp, "%c", &ch); // 9后面的',' cout << ch << endl;cout << "ftell(fp) = " << ftell(fp) << endl<< endl;fseek(fp, -4L, 1);cout << "ftell(fp) = " << ftell(fp) << endl;fscanf(fp, "%c", &ch); // w cout << ch << endl;cout << "ftell(fp) = " << ftell(fp) << endl<< endl;fclose(fp);
}int  main()
{					writeExcel()  ;	system("pause"); return 0;
}

结果分析可知

首先数据是:%c + ‘,’ + %d + ‘\n’ …
1

字节数总共 29(0 ~ 28),可见数据一共 4 行,每行字节数是 7
第 1 行,0 ~ 6
第 2 行,7 ~ 13
第 3 行,14 ~ 20
第 4 行,21 ~ 27
第 5 行,28 是文本结尾 feof(fp)
2
%c ‘,’ %d ‘\n’ 所占字节都是 1L
字符
:–
指针位置
3
顺序读数据
很容易忘了加上 &
fscanf(fp, "%c,%d,%d\n", &ch, &d1, &d2);

逆序读
读完一个数,跳了 1L,再向前跳 3L 才是前一个数

fscanf(fp, "%d\n", &d2);
fseek(fp, -3L, 1);//从当前位置 向着开头的方向移动3L字节
fscanf(fp, "%d\n", &d2);

4
csv 文本结尾是 另开辟一行!
当从头读 或 遍历 数据时,会遍历到最后的 “空行”,具体情况要注意代码细节的不同


http://chatgpt.dhexx.cn/article/8eK3aXCi.shtml

相关文章

C语言基础——数据运算

一 运算基础 运算的本质是根据已有数据&#xff0c;进行各种运算处理&#xff0c;得到新的数据。所以&#xff0c;运算的基础就是数据。在数据的表示方法中&#xff0c;声明的变量只是一个空的指代&#xff0c;并没有和具体的数据进行关联。如果要使用变量&#xff0c;就要把数…

C语言数据溢出

文章目录 int 类型char int 类型 unsigned int num -1;printf("%u", num);解析&#xff1a; 首先在寄存器产生一个负数-1&#xff0c;它在计算机中存储的补码是 32个1&#xff0c;共32个二进制位&#xff0c;当按照赋值号赋给无符号num变量时&#xff0c;符号位变成…

C语言 数据处理

在不使用scanf函数如何对输入的数进行逆序输出呢&#xff1f;首先要得到该数的位数&#xff0c;因为需要在顺序输出里使用。 代码如下: int Getfigure(int n) {int tmp0; //计算循环次数while(n ! 0){n / 10;tmp;}return tmp; //该数的位数 } 其次要清楚该处理…

【Keil 5安装教程】

文章目录 一、安装mdk二、激活mdk三、安装STM32芯片包四、安装C51单片机五、激活C51单片机 一、安装mdk 1、在解压的安装包里&#xff0c;点击运行mdk514.exe文件&#xff1b; 2、在弹出的页面中点击NEXT&#xff1b; 3、打勾I Agree&#xff0c;点击Next&#xff1b; 4、在…

keil3 安装教程

安装前先关闭杀毒软件和360卫士&#xff0c;注意安装路径不能有中文&#xff0c;安装包路径也不要有中文。 1.选中【Keiluvision 3 C51版】压缩包&#xff0c;鼠标右击选择【解压到Keil uvision 3 C51版】。 2.双击打开【Keiluvision 3 C51版】文件夹。 3.选中【KEILc51v802…

keil安装指导

keil arm 5.36下载地址 C51 960a下载地址 注册码 这个自己搜索下载 安装指导 注意&#xff1a; 如果你想C51和ARM一起安装&#xff0c;那就先安装C51再ARM版本的。如果你已经先安装完了ARM的也没关系&#xff0c;安装完C51的再重新安装下ARM的就可以 安装C51 双击你下…

c语言定义函数时形参定义的位置

今天在读Zlib库源码中第三方contrib/minizip文件时&#xff0c;发现一个有意思的东西&#xff1a; 定义函数时&#xff0c;其形参的类型放在函数()后面&#xff0c;()里只放了形参名 虽然这样最终用编译器&#xff08;如gcc等&#xff09;编译时是可以通过的&#xff0c;但是…

C语言函数(函数分类,参数,调用,声名及定义)

文章目录 [TOC](文章目录)一、C语言中函数的分类二、函数的参数及调用三、函数的嵌套调用和链式访问四、函数的声名和定义 一、C语言中函数的分类 库函数自定义函数 库函数&#xff1a;在开发的过程中&#xff0c;每个程序员都可能用得到&#xff0c;为了支持可移植性和提高程…

c语言函数定义的语法格式,C语言函数 -C语言函数定义的语法格式

C语言程序是由多个零件组合而成的&#xff0c;而函数就是最主要的组合零件。C语言程序的主体部分就是一个 main( ) 函数&#xff0c;它在 C语言程序中是必不可少的&#xff0c;每一个 C 程序都首先从 main( ) 函数开始执行。 C语言函数是什么 在前面的学习中&#xff0c;我们知…

c语言函数定义范围,c语言定义函数

函数是一段可以重复使用的代码&#xff0c;用来独立地完成某个功能&#xff0c;它可以接收用户传递的数据&#xff0c;也可以不接收。接收用户数据的函数在定义时要指明参数&#xff0c;不接收用户数据的不需要指明&#xff0c;根据这一点可以将函数分为有参函数和无参函数。 将…

C语言-函数(一):函数的定义和调用

函数是一个完成特定工作的独立程序模块&#xff0c;包括库函数和自定义函数两种。例如&#xff0c;scanf()、printf()等这些都为库函数&#xff0c;是由C语言系统提供定义&#xff0c;编程时直接调用即可&#xff1b;还有一种是自己定义的函数&#xff0c;我们主要介绍的就是这…

全网最细!软件测试—bug生命周期

测试人员最本质的工作就是寻找bug&#xff0c;提交bug、验证bug、推进bug的解决&#xff0c;直至软件达到发布的标准&#xff0c;提高软件的质量&#xff0c;及研发的工作效率和质量。 一、什么是bug 软件的BUG,狭义概念是指软件程序的漏洞或缺陷&#xff0c;广义概念除此之外还…

bug的生命周期你知道吗?一张图带你看懂它!

目录 1、什么是bug 2、bug的生命周期 3、如何描述一个bug 4、bug的级别 1、什么是bug 软件的bug狭义方面可以理解为是指软件程序的漏洞或缺陷&#xff0c;广义方面除找到程序漏洞之外&#xff0c;还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差…

如何描述一个BUG以及BUG级别的定义、生命周期

目录 一、如何描述一个BUG&#xff1f; 二、BUG级别的定义 1.崩溃 2.严重 3.一般 4.次要 三、BUG的生命周期 一、如何描述一个BUG&#xff1f; 1.版本号&#xff08;代码版本号&#xff09; 2.测试环境/平台 不同的浏览器对同一个页面解析是不一样的&#xff1a; ①…

一个BUG(缺陷)的生命周期

缺陷状态 对于一个问题&#xff0c;其处理过程是一个周期&#xff0c;周期的不同阶段&#xff0c;其所处的状态也是不一样的。不同状态所对应的处理人也是不一样的。 打开 &#xff1a; 表示问题被提交等待有人处理。 重新指派 &#xff1a; 问题被重新指派给某人处理。 处理 …

bug生命周期bug跟踪处理

一、BUG BUG&#xff1a;软件的缺陷 1.BUG的定义&#xff1a;----与软件测试的目的对应 软件的BUG,狭义概念是指软件程序的漏洞或缺陷&#xff0c;广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与需求文档存在差异的功能实现等。 我们的职责就是&…

软件测试bug生命周期

测试人员最本质的工作就是寻找bug&#xff0c;提交bug、验证bug、推进bug的解决&#xff0c;直至软件达到发布的标准&#xff0c;提高软件的质量&#xff0c;及研发的工作效率和质量。 一、什么是bug 软件的BUG,狭义概念是指软件程序的漏洞或缺陷&#xff0c;广义概念除此之外…

简述Bug生命周期与Bug管理

Bug&#xff0c;即在测试过程中发现的问题&#xff0c;是测试工程师绩效最重要的考核之一&#xff0c;也是面试常被问到的知识领域。 今天&#xff0c;从Bug的生命周期入手&#xff0c;跟大家聊聊Bug管理。 Bug的生命周期如下所示&#xff0c;其中&#xff0c;新建、分配&…

(四)Bug的生命周期

Bug的属性 Bug重现环境 这个应该是我们重现bug的一个前提&#xff0c;如果没有这个前提&#xff0c;我们可能会无法重现问题&#xff0c;或者跟本就无从下手。 操作系统 这个是一般软件运行的一大前提&#xff0c;基本上所有的软件都依赖于操作系统之上的&#xff0c;对于一…

面试题之Bug的生命周期

今天来分享一个基础面试题&#xff1a;Bug的生命周期&#xff0c;虽然基础&#xff0c;但是面试被问到的概率很高。 Bug的生命周期&#xff0c;也就是一个Bug被发现到被关闭的过程&#xff0c;在整个生命周期中&#xff0c;不同的阶段对应不同的缺陷状态。 大家可以参考如下的…