📅  最后修改于: 2023-12-03 15:13:48.452000             🧑  作者: Mango
CSV(Comma Separated Values)意为逗号分隔值,是一种常用的文本格式,用于将一组具有相同属性的数据连接在一起。在C编程中,读取CSV文件经常是必需的。在本文中,我们将介绍如何在C中读取CSV文件,并将其转换为适当的数据类型。
在C中,我们可以使用标准库提供的函数fopen和fscanf来读取CSV文件。其中,fopen函数用于打开文件,并将文件指针指向文件开头,而fscanf函数用于从文件中读取具有格式的数据。
下面是读取CSV文件的示例代码:
#include <stdio.h>
int main() {
FILE *fp;
char filename[] = "data.csv";
char line[100];
int id;
char name[20];
float salary;
fp = fopen(filename, "r");
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%d,%[^,],%f", &id, name, &salary);
printf("%d %s %.2f\n", id, name, salary);
}
fclose(fp);
return 0;
}
代码说明:
在CSV文件中,日期通常以yyyy-mm-dd的格式存储。如果我们需要在C中将其读入,并进行日期运算,那么就需要将其转换为time_t类型,这需要使用C标准库中的strptime函数。
下面是读取CSV文件中日期的示例代码:
#include <stdio.h>
#include <time.h>
int main() {
FILE *fp;
char filename[] = "data.csv";
char line[100];
int id;
char name[20];
float salary;
char date_str[11];
struct tm date;
time_t time;
fp = fopen(filename, "r");
while (fgets(line, sizeof(line), fp)) {
sscanf(line, "%d,%[^,],%f,%[^,]", &id, name, &salary, date_str);
strptime(date_str, "%Y-%m-%d", &date);
time = mktime(&date);
printf("%d %s %.2f %s", id, name, salary, ctime(&time));
}
fclose(fp);
return 0;
}
代码说明:
在本文中,我们介绍了如何使用C读取CSV文件,并将其转换为适当的数据类型。我们还介绍了如何读取CSV文件中的日期,并将其转换为time_t类型。这些知识对于处理数据文件,特别是需要进行日期计算的数据文件非常有用。