最近做一个模块,需要通过C语言实现CSV文件的读取,自己这边参考晚上大神的文章,重新开发做了封装,也希望对大家有点帮助。
ReadCSVFile.h
是我自己定义实现csv文件读写的头文件,同样的,ReadCSVFile.c
是我自己定义实现csv文件读写的源文件。
使用方法可以从下面的main函数看出来,首先用ReadCsvData()
读取Csv文件到一个数组中,然后就可以使用ShowCsvData()
读取想要的某行的数据了,最后结束时要用FreeCsvData()
释放空间。
#include "ReadCSVFile.h"
int main(void)
{
char *filename="Test.csv";
ReadCsvData(filename); //读取csv数据
ShowCsvData(); //通过控制台显示读取的csv数据
FreeCsvData(); //释放动态数组
return 1;
}
运行结果如下:
(不需要关心数据这个只是个普通的测试文档,告诉大家这个方法是可行的)
封装文件如下:
int GetTotalLineCount(FILE* fp); //计算csv文件中的总行数
int GetTotalColCount(FILE * fp); //计算csv文件中的总列数(以第一行的列数为基准)
int AssignSpaceForData(int inumdata); //通过指针*giCsvData给数据动态分配内存空间
void FreeCsvData(); //释放动态数据内存
int ReadCsvData(char* csvFilePath); //读取Csv中数据(本例默认数据类型为int)
void ShowCsvData();