0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

c语言读写表格(csv)文件 读取csv文件示例

嵌入式技术 来源:嵌入式技术 作者:嵌入式技术 2022-06-08 09:22 次阅读

1. csv文件简介

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用WORDPAD或是记事本来开启,再则先另存新档后用EXCEL开启,也是方法之一。
CSV文件格式的通用标准并不存在,但是在RFC 4180中有基础性的描述。使用的字符编码同样没有被指定,但是bitASCII是最基本的通用编码。

2.csv文件信息

 1.通过excel打开文件

pYYBAGKXCjiABj36AABhslI-QOw111.png#pic_center

 2.通过Notepad++打开或记事本打开

poYBAGKXCWyAPXV5AADMKzKuelc236.png

3.读取csv文件示例

#include 
#include 
#include 
#include 
#include 
/*
"APPID","人脸库","创建时间","用户组ID","修改时间","用户ID","修改时间","人脸url"
"25497897","人脸识别","2022-01-11 16:09:21","wbyq","2022-01-13 11:02:50","18679314703","2022-01-13 11:00:52","https://console.bce.baidu.com/ai/s/facelib/face?appId=3028051&groupId=wbyq&uid=18679514703&faceId=070f81ef00383d7c376aac1c38b73090"
"25497897","人脸识别","2022-01-11 16:09:21","wbyq","2022-01-13 11:02:50","18659514703","2022-01-13 11:00:52","https://console.bce.baidu.com/ai/s/facelib/face?appId=3028051&groupId=wbyq&uid=18679514703&faceId=f83fc8ca898f4d4a2a17ef4dc341187e"
"25497897","人脸识别","2022-01-11 16:09:21","wbyq","2022-01-13 11:02:50","18679514703","2022-01-13 11:00:52","https://console.bce.baidu.com/ai/s/facelib/face?appId=3028051&groupId=wbyq&uid=18679514703&faceId=65041fdb1f58fbd6c3b983045b8f840a"
"25497897","人脸识别","2022-01-11 16:09:21","wbyq","2022-01-13 11:02:50","18679214703","2022-01-13 11:00:52","https://console.bce.baidu.com/ai/s/facelib/face?appId=3028051&groupId=wbyq&uid=18679514703&faceId=39555691bf84a277bee85a2f1cd09e68"
"25497897","人脸识别","2022-01-11 16:09:21","wbyq","2022-01-13 11:02:50","18671514703","2022-01-13 11:00:52","https://console.bce.baidu.com/ai/s/facelib/face?appId=3028051&groupId=wbyq&uid=18679514703&faceId=0ff8d148721ae720c5815934929e77b3"
"25497897","人脸识别","2022-01-11 16:09:21","wbyq","2022-01-13 11:02:50","18679513703","2022-01-13 11:00:52","https://console.bce.baidu.com/ai/s/facelib/face?appId=3028051&groupId=wbyq&uid=18679514703&faceId=aebc792d6c5fec000be59a934dfd28c3"
*/
int readfile_csv(char *filename)
{
	char c;
	FILE *fp = fopen(filename,"rb");
	int file_line=1,file_row=0;
	fseek(fp,0,SEEK_END);
	long flen = ftell(fp);
	printf("len = %ld\n",flen);
	fseek(fp,0,SEEK_SET);
	int fd=fileno(fp);//文件指针转文件描述符	
	if(fd==-1)
	{
		printf("转换失败\n");
		return -1;
	}	
	char *file_addr=mmap(NULL,flen,PROT_READ,MAP_SHARED,fd,0);//内存映射
	fclose(fp);
	close(fd);	
	if(file_addr==NULL)
	{
		printf("映射失败\n");
		return -2;
	}
	/*统计行*/
	char *p=file_addr;
	p=strstr(file_addr,""");
	while(*p)
	{
		if(*p=='\n')
		{
			p=strstr(p,""");
			if(p==NULL)break;
			file_line++;
		}
		else p++;
	}
	printf("行:%d\n",file_line);//统计行
	//"APPID","人脸库","创建时间","用户组ID","修改时间","用户ID","修改时间","人脸url"
	/*统计列*/
	int cnt=0;
	p=file_addr;
	p=strstr(file_addr,""");
	p++;
	while(*p && *p!='\n')
	{
		while(*p!='"' && *p)p++;
		p++;
		cnt++;
		if(*p=='\n')break;
		else if(*p==',')p+=2;
	}
	printf("列:%d\n",cnt);
	/*将.csv文件数据保存到数组中*/
	char buff[file_line][cnt][500];
	int i,j;
	p=strstr(file_addr,""");
	p++;
	for(i=0;i

运行结果:

poYBAGKXCb-AQsGKAAHNPg1HkNM541.png

4.修改CSV文件

/*
函数功能:修改csv文件
形参:filename --文件名
      line  --要修改的行(从1开始)
	  row   --要修改的列(从1开始)
	  data  --修改的内容
返回值:成功返回0,失败返回负数
*/
int modifyfile_csv(char *filename,int line,int row,char *data)
{
	char c;
	FILE *fp = fopen(filename,"rb");
	int file_line=1,file_row=0;
	fseek(fp,0,SEEK_END);
	long flen = ftell(fp);
	printf("len = %ld\n",flen);
	fseek(fp,0,SEEK_SET);
	int fd=fileno(fp);//文件指针转文件描述符	
	if(fd==-1)
	{
		printf("转换失败\n");
		return -1;
	}	
	char *file_addr=mmap(NULL,flen,PROT_READ,MAP_SHARED,fd,0);//内存映射
	fclose(fp);
	close(fd);	
	if(file_addr==NULL)
	{
		printf("映射失败\n");
		return -2;
	}
	/*统计行*/
	char *p=file_addr;
	p=strstr(file_addr,""");
	
	while(*p)
	{
		if(*p=='\n')
		{
			p=strstr(p,""");
			if(p==NULL)break;
			file_line++;
		}
		else p++;
	}
	printf("行:%d\n",file_line);//统计行
	
	//"APPID","人脸库","创建时间","用户组ID","修改时间","用户ID","修改时间","人脸url"
	/*统计列*/
	int cnt=0;
	p=file_addr;
	p=strstr(file_addr,""");
	p++;
	while(*p && *p!='\n')
	{
		while(*p!='"' && *p)p++;
		p++;
		cnt++;
		if(*p=='\n')break;
		else if(*p==',')p+=2;
	}
	printf("列:%d\n",cnt);
	/*将.csv文件数据保存到数组中*/
	char buff[file_line][cnt][500];
	int i,j;
	p=strstr(file_addr,""");
	p++;
	for(i=0;ifile_line || row>cnt)
	{
		printf("未找到要修改的位置\n");
		return 0;
	}
	char src_data[500];
	if(row==cnt)
	{
		snprintf(src_data,sizeof(src_data),""%s"\n",data);
	}
	else snprintf(src_data,sizeof(src_data),""%s",",data);
	strcpy(buff2[line-1][row-1],src_data);
	int size;
	for(i=0;i

运行结果:

poYBAGKXCf6AXEkvAAK5NlbiOLs900.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136121
  • csv
    csv
    +关注

    关注

    0

    文章

    38

    浏览量

    5802
收藏 人收藏

    评论

    相关推荐

    在EXECL里怎么编辑CSV文件,CSV是什么?

    COMMA SEPARATED VALUE的缩写,既逗号分格.其实就是用纯文本存储,信息间用","分割在EXCEL里可以直接编辑 在excel里另存为时可选择csv格式.csv是一种以逗号分隔的文件格式,在excel里另存有这个
    发表于 11-17 16:02

    labview如何读取以制表符分割的csv文件

    把txt文件后缀名改为csv就得到以制表符分割的csv文件读取之后需要对数据进行一些处理 删除和加入一些数据之后另存为txt
    发表于 04-01 10:51

    LabVIEW读取.CSV文件

    .CSV文件其实也是一种文本文件,跟.xsl文件的区别在于分割符不同,.CSV以逗号(英文)分割,.xsl以tab分割,使用
    发表于 04-07 17:52

    labview读取动态.csv文件时是隔一段时间读取相对应的数据

    要求:在读取动态.csv文件时是隔一段时间读取举个例子说明,如图:1.第1次读取csv时,数据从
    发表于 06-10 11:19

    csv格式文件读取问题?

    本帖最后由 金大大 于 2016-11-14 19:48 编辑 现有一个4万行数字的csv格式的文件,使用读取电子表格文件控件
    发表于 11-12 23:42

    Text 文件转换成CSV 文件

    Labview 把TEXT 文件,转换成二维数组中,想保存成*.CSV 文件,需要在固定某一列插入逗号(,),在数组中已经插入成功,但是形成的CSV
    发表于 03-03 08:50

    ccs 如何编译生成csv文件

    您好,使用--abi=coffabi --analyze=callgraph --use_profile_info=x.prf  编译选项,怎么没生成.csv文件? 请问如何编译生成.csv
    发表于 06-21 06:05

    写入.csv文件的问题

    嗨Vee用户,我有一个Vee测试,我从.csv文件读取了许多参数,执行测试循环,并在每个循环结束时将结果存储在another.csv文件
    发表于 10-09 14:55

    csv文件中的数据

    我有一台N9912 FieldFox,可以从设备中检索csv文件csv文件未声明重要参数,例如分辨率带宽。有可能获得完整的仪器状态和数据作为我可以阅读的文本
    发表于 11-26 09:14

    labview如何自动读取文件夹中的若干个数据(csv文件

    刚学习labview,希望了解labview如何自动读取一个文件夹中的若干个csv文件,即完成检测有csv
    发表于 10-16 18:10

    Python3如何对CSV进行写入和读写

    这里考虑把API、参数、以及预期结果预行在格式化的CSV里保存,利用csv组件从CSV读取URL、参数以及预期结果,Requests组件发起请求,将响应结果与预期结果进行比对,最后把
    发表于 05-11 15:49 5637次阅读
    Python3如何对<b class='flag-5'>CSV</b>进行写入和<b class='flag-5'>读写</b>

    pandas读取csv文件有什么方法和注意点?

    这篇文章介绍了利用数据分析工具pandas读取csv文件的方法和注意点,便于迅速过渡到数据处理阶段。pandas是一个高效的数据分析工具。基于其高度抽象的数据结构DataFrame,几乎可以对数据进行任何你想要的操作。
    的头像 发表于 07-21 10:00 9827次阅读
    pandas<b class='flag-5'>读取</b><b class='flag-5'>csv</b><b class='flag-5'>文件</b>有什么方法和注意点?

    如何通过pandas读取csv文件指定的前几行?

    今天小编给大家分享一篇Python技术开发方面的文章,如何实现pandas读取csv文件指定的前几行,喜欢Python开发的小伙伴下面就随小编一起来了解一下吧。
    发表于 09-19 17:43 16次下载

    介绍Python中常用的文件读取方法以及应用示例

    ython 文件读取是 Python 语言中的基本操作之一。在编写Python 程序时,我们经常需要读取不同的文件,例如文本
    的头像 发表于 04-27 09:16 1020次阅读

    Python教你用 Rows 快速操作csv文件

    Rows 是一个专门用于操作表格的第三方Python模块。 只要通过 Rows 读取 csv 文件,她就能生成可以被计算的 Python 对象。 相比于 pandas 的 pd.rea
    的头像 发表于 10-21 10:18 567次阅读