溫馨提示×

c語言怎么讀取csv文件數(shù)據(jù)

小億
283
2024-01-25 16:42:40
欄目: 編程語言

要在C語言中讀取CSV文件的數(shù)據(jù),可以按照以下步驟進行:

  1. 引入所需的頭文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
  1. 定義一個結構體來存儲CSV文件中的每一行數(shù)據(jù):
typedef struct {
    char field1[100];
    char field2[100];
    // 可以根據(jù)需要添加更多的字段
} CSVData;
  1. 編寫函數(shù)來讀取CSV文件的數(shù)據(jù):
void readCSV(const char* filename, CSVData* data, int* num_rows) {
    FILE* file = fopen(filename, "r");
    if (file == NULL) {
        printf("無法打開文件。\n");
        return;
    }

    char line[256];
    int i = 0;

    while (fgets(line, sizeof(line), file)) {
        // 使用strtok函數(shù)按照逗號分隔每個字段
        char* token = strtok(line, ",");
        strcpy(data[i].field1, token);
        token = strtok(NULL, ",");
        strcpy(data[i].field2, token);
        // 可以根據(jù)需要繼續(xù)讀取更多的字段

        i++;
    }

    *num_rows = i;

    fclose(file);
}
  1. 調(diào)用上述函數(shù)來讀取CSV文件的數(shù)據(jù):
int main() {
    CSVData data[100];
    int num_rows;
    readCSV("data.csv", data, &num_rows);

    // 打印讀取到的數(shù)據(jù)
    for (int i = 0; i < num_rows; i++) {
        printf("第 %d 行數(shù)據(jù):\n", i+1);
        printf("字段1:%s\n", data[i].field1);
        printf("字段2:%s\n", data[i].field2);
        // 可以根據(jù)需要打印更多的字段
        printf("\n");
    }

    return 0;
}

以上代碼假設CSV文件中每行只有兩個字段,可以根據(jù)實際情況進行調(diào)整。另外,需要確保CSV文件存在且格式正確。

0