c语言读写csv文件
时间: 2024-11-28 22:18:45 浏览: 4
在C语言中读写CSV(Comma Separated Values)文件通常需要用到一些库函数,如标准库的`fopen`、`fclose`、`fgets`以及第三方库像`libcsv`或`pcrecpp`等。以下是一个简单的示例,说明如何使用标准库来处理:
**读取CSV文件**:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_LINE_LENGTH 1000
int main() {
FILE *file;
char line[MAX_LINE_LENGTH];
// 打开文件
file = fopen("example.csv", "r");
if (file == NULL) {
perror("Error opening file");
return 1;
}
// 逐行读取并解析CSV数据
while (fgets(line, sizeof(line), file)) {
char* token = strtok(line, ",");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
printf("\n"); // 每行结束换行
}
// 关闭文件
fclose(file);
return 0;
}
```
**写入CSV文件**:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void write_csv(const char* filename, const char* fieldnames[], const char* values[]) {
FILE* file = fopen(filename, "w");
if (file == NULL) {
perror("Error creating file");
return;
}
for (size_t i = 0; i < strlen(fieldnames[0]); ++i) { // 写入字段名行
fprintf(file, "%s,", fieldnames[i]);
}
fprintf(file, "\n");
for (size_t i = 0; i < sizeof(fieldnames) / sizeof(*fieldnames); ++i) { // 写入每个记录行
for (size_t j = 0; fieldnames[j][i] != '\0'; ++j) {
fprintf(file, "%s,", values[i][j]);
}
fprintf(file, "\n");
}
fclose(file);
}
// 示例:写入一行数据到CSV文件
void add_record(char* filename, char* fields[]) {
static char values[] = {"Value1", "Value2", "Value3"};
write_csv(filename, fields, values);
}
int main() {
char fields[] = {"Field1", "Field2", "Field3"};
add_record("output.csv", fields);
return 0;
}
```
阅读全文