在C语言中读取CSV文件可以通过以下步骤实现:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROWS 100
#define MAX_COLS 100
typedef struct {
char data[MAX_ROWS][MAX_COLS][256];
int rows;
int cols;
} CSVData;
void readCSV(const char* filename, CSVData* csvData) {
FILE* file = fopen(filename, "r");
if (file == NULL) {
printf("无法打开文件 %s\n", filename);
exit(1);
}
char line[1024];
int row = 0;
int col = 0;
while (fgets(line, sizeof(line), file)) {
col = 0;
char* token = strtok(line, ",");
while (token != NULL) {
strcpy(csvData->data[row][col], token);
token = strtok(NULL, ",");
col++;
}
row++;
}
csvData->rows = row;
csvData->cols = col;
fclose(file);
}
int main() {
CSVData csvData;
readCSV("data.csv", &csvData);
for (int i = 0; i < csvData.rows; i++) {
for (int j = 0; j < csvData.cols; j++) {
printf("%s\t", csvData.data[i][j]);
}
printf("\n");
}
return 0;
}
上述代码中,readCSV
函数接受CSV文件名和一个指向CSVData
结构体的指针作为参数。它使用fopen
函数打开文件,并逐行读取文件内容。每行使用strtok
函数将逗号分隔的数据拆分为单个字段,并将其存储到结构体的二维数组中。最后,函数关闭文件并设置结构体的行数和列数。
在main
函数中,我们调用readCSV
函数来读取名为"data.csv"的CSV文件,并使用循环打印出所有数据。
请注意,上述代码仅适用于简单的CSV文件,每个字段都不包含逗号或引号等特殊字符。如果CSV文件中包含这些特殊字符,需要进行额外的处理。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云