.CSV 文件工具方法
2021年12月26日 15时xx分 到 17时38分, 完成了对于 csv 文件按行列进行操作的 C语言 工具. ——遴阅.谭
结构组成
typedef char* String;
typedef struct CSVDATAS_COLUMNS {
String data;
struct CSVDATAS_COLUMNS* next;
}CSV_COLUMN;
typedef struct CSVDATAS_LINE {
CSV_COLUMN* columns;
struct CSVDATAS_LINE* next;
}CSV_LINE;
typedef struct CSVDATAS {
CSV_LINE* lines;
int line_num;
int column_num;
}DATA_CSV;
typedef struct CSVFILEs {
String path;
FILE* fp;
DATA_CSV* data_csv;
}FILE_CSV;
-
FILE_CSV
类型csv 文件类,用于存储指向 csv 文件的指针及数据并保存路径。
-
DATA_CSV
类型csv 数据类,用于存储文件中每一行的数据
-
CSV_LINE
类型csv 数据类(行),用于存储一行的数据
-
CSV_COLUMN
类型csv 数据类(列),用于存储行中的一个数据单元
1. 加载 csv 文件——(Fileloading_CSV)
//FILE_CSV* Fileloading_CSV(String path, int column_num); //不能自动检查列数
FILE_CSV* Fileloading_CSV(String path);
使用方法:
//FILE_CSV* csv = Fileloading_CSV("D:\\src\\res\\ALL.csv", col_num);
FILE_CSV* csv = Fileloading_CSV("D:\\src\\res\\ALL.csv");
2. 获取行/列
CSV_LINE* getLineIndex(DATA_CSV* csv, int row_index);
CSV_COLUMN* getColumnIndex(CSV_LINE* line, int col_index);
使用方法:
String getData(DATA_CSV* csv,int row, int col) {
return getColumnIndex(getLineIndex(csv,row),col)->data;
}
3. 获取特定坐标的单元
String getData(DATA_CSV* csv, int row, int col);
4. 使用效果演示
int main(int argc,char* agrv[]) {
if (argc > 1) {
FILE_CSV* csv = Fileloading_CSV(agrv[1]);
String str = NULL;
if (csv != NULL) {
for (int i = 0; i < csv->data_csv->line_num; i++) {
for (int j = 0; j < csv->data_csv->column_num; j++) {
printf("%-23s\t", getData(csv->data_csv, i, j));
}
putchar('\n');
}
}
return 0;
}
return 1;
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LLxRCWtT-1640516308467)(C:/Users/Lenovo/AppData/Roaming/Typora/typora-user-images/image-20211226183312365.png)]
需要文件请前往: