第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > linux下c语言读取csv文件 C语言读取csv文件

linux下c语言读取csv文件 C语言读取csv文件

时间:2018-11-28 01:10:10

相关推荐

linux下c语言读取csv文件 C语言读取csv文件

C语言读取csv文件

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

#include

#include

#include

int get_row(char *filename);

int get_col(char *filename);

void get_relationship(int** data, char* filename, int col);

void main()

{

char filename[] = "./Example.csv";

int row, col;

row = get_row(filename);

col = get_col(filename);

printf("row = %d, col = %d\n", row, col);

int **data;

data = (int **)malloc(row * sizeof(int *));

for(int i=0; i

{

data[i] = (int *)malloc(col * sizeof(int));

}

get_relationship(data, filename, col);

printf("\nhello");

}

int get_row(char *filename)

{

FILE* stream = fopen(filename, "r");

int i = 0;

while(fgetc(stream) != EOF)

{

if(fgetc(stream) == '\n')

{

i++;

}

}

fclose(stream);

return i;

}

int get_col(char *filename)

{

FILE* stream = fopen(filename, "r");

int i = 0;

int x;

while((x = fgetc(stream)) != '\n')

{

if(x == ',')

{

i++;

}

}

fclose(stream);

return i+1;

}

void get_relationship(int** data, char* filename, int col)

{

FILE* stream = fopen(filename, "r");

char line[2*col+1];

int i = 0;

while (fgets(line, 2*col+1, stream))

{

int j = 0;

char *tok;

char* tmp = strdup(line);

for (tok = strtok(line, ","); tok && *tok; j++, tok = strtok(NULL, ",\n"))

{

data[i][j] = atof(tok);

}

i++;

free(tmp);

}

fclose(stream);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。