C语言读取csv文件数据并分组

核心就是.csv文件各组数据之间用‘,’逗号来分割,我们使用C语言的strtok函数对.csv文件的每一行数据进行分割即可。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<bits/stdc++.h>
using namespace std;

void cut(char *line,int num)//读入这一行的数据 / 数据的组数-1(逗号的个数)
{
char *temp;
temp=strtok(line,",");
if(temp)
{
printf("第1组数据:%6s\t",temp);//第一组数据
}
for(int now=0;now<num-1;now++)
{
temp = strtok(NULL,",");
printf("第%d组数据:%6s\t",now+2,temp);//中间的数据
}
temp = strtok(NULL,",");
temp[strlen(temp)-1]='\0';//把fgets读取的回车去掉
printf("第%d组数据:%6s\n",num+1, temp);//最后一组数据
}

int main(int argc, char *argv[])
{
/*if(argc!=3)
{
return 0;
}*/

FILE *file = fopen("minute.csv","r");//读文件
if(!file)
{
printf("file error");
return 0;
}

char line[1024];
int num=0;
fgets(line,1024,file);

for(int now=0;line[now]!='\n';now++)//通过统计分割的逗号 来统计数据的组数
{
if(line[now]==',')
{
num++;
}
}

printf("一共有%d组数据\n",num+1);//有num个逗号 就是有num+1组数据
cut(line,num);//分割输出第一行

while(fgets(line,1024,file)!=NULL)//对之后行进行分割
{
cut(line,num);
}

return 0;
}