C語言讀取CSV文件存儲到數組

一、從C語言讀取CSV文件例題

CSV,即逗號分隔符文件,是一種常用於存儲和交換數據的文件格式。CSV文件的每一行都是一條數據記錄,每個欄位使用逗號進行分隔。下面是一個簡單的CSV文件示例:

"Name","Age","Gender"
"John",25,"Male"
"Alice",30,"Female"
"Bob",20,"Male"

下面是從C語言讀取CSV文件的代碼示例:

//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
    printf("無法打開文件\n");
    return 1;
}

//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
    //分割行數據
    char* tok;
    for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
        printf("%s ", tok);
    }
    printf("\n");
}

//關閉文件
fclose(fp);

上述代碼首先使用標準C庫函數fopen打開了CSV文件,然後使用fgets逐行讀取文件內容。在每一行讀取完成後,使用strtok函數分割行數據,然後將每個欄位列印出來。

二、讀取CSV文件的某一列數據

在實際應用中,有時只需要讀取CSV文件中的某一列數據。下面是讀取CSV文件中某一列數據的代碼示例:

//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
    printf("無法打開文件\n");
    return 1;
}

//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
    //分割行數據
    char* tok;
    int col = 0;
    for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
        if (col == 1) { //讀取第二列數據
            printf("%s\n", tok);
            break;
        }
        col++;
    }
}

//關閉文件
fclose(fp);

上述代碼在讀取每一行數據時,使用計數器col記錄當前讀取的欄位數量,當讀取到第二列數據時,將其列印出來。

三、CSV文件數據讀取

CSV文件可能包含各種各樣的數據,因此在讀取CSV文件時需要進行數據類型的轉換。下面是一個讀取CSV文件數據的代碼示例:

//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
    printf("無法打開文件\n");
    return 1;
}

//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
    //分割行數據
    char* tok;
    int col = 0;
    char name[32];
    int age;
    char gender[8];

    for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
        switch (col) {
            case 0:
                strcpy(name, tok);
                break;
            case 1:
                age = atoi(tok);
                break;
            case 2:
                strcpy(gender, tok);
                break;
            default:
                break;
        }
        col++;
    }

    //處理數據
    //...
}

//關閉文件
fclose(fp);

上述代碼使用switch語句將CSV文件中的字元串數據轉換為int或char類型數據。

四、C讀取文件存入數組

在讀取CSV文件時,通常需要將讀取到的數據存儲在數組中,方便後續處理。下面是將CSV文件中的數據存儲在數組中的代碼示例:

//打開文件
FILE* fp = fopen("data.csv", "r");
if (fp == NULL) {
    printf("無法打開文件\n");
    return 1;
}

//定義數組
#define MAX_ROWS 100
#define MAX_COLS 4
char data[MAX_ROWS][MAX_COLS][32];
int row = 0;

//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
    //分割行數據
    char* tok;
    int col = 0;
    for (tok = strtok(line, ","); tok && *tok; tok = strtok(NULL, ",\n")) {
        strcpy(data[row][col], tok);
        col++;
    }
    row++;
}

//關閉文件
fclose(fp);

上述代碼定義了一個3維字元數組data,使用二重循環將CSV文件中的數據存儲在數組中。

五、讀取CSV文件中的數據用什麼包

讀取CSV文件時,有很多第三方包可以使用,從而簡化開發過程。下面是幾個常用的C語言讀取CSV文件的包:

  • libcsv:基於C語言的CSV文件解析器,可快速讀取並解析CSV文件。
  • OpenCSV:Java語言的CSV文件解析器,支持從各種數據源中讀取CSV文件。
  • CSVeed:基於Java語言的CSV文件解析器,提供了豐富的CSV解析選項。

六、C讀取HEX文件存入數組

與CSV文件類似,HEX文件也是一種經常使用的文件格式。HEX文件是一種用於編程器件中的機器語言代碼的格式,即程序可以通過HEX文件格式被燒錄到晶元中。下面是將HEX文件存儲在數組中的代碼示例:

//打開文件
FILE* fp = fopen("data.hex", "r");
if (fp == NULL) {
    printf("無法打開文件\n");
    return 1;
}

//定義數組
#define MAX_ROWS 100
#define MAX_COLS 16
unsigned char data[MAX_ROWS][MAX_COLS];
int row = 0;

//讀取文件
char line[1024];
while (fgets(line, 1024, fp)) {
    //解析HEX文件格式
    //...
    memcpy(data[row], hex_data, sizeof(hex_data));
    row++;
}

//關閉文件
fclose(fp);

上述代碼將讀取到的HEX文件數據存儲在一個二維unsigned char數組中,方便後續處理。

七、C#讀取CSV文件

在.NET Framework中,可以使用StreamReader類讀取CSV文件。下面是一個讀取CSV文件的代碼示例:

using System.IO;

//打開文件
StreamReader sr = new StreamReader("data.csv");
if (sr == null) {
    Console.WriteLine("無法打開文件");
    return;
}

//讀取文件
while (!sr.EndOfStream) {
    string line = sr.ReadLine();
    string[] fields = line.Split(',');
    foreach (string field in fields) {
        Console.Write(field + " ");
    }
    Console.WriteLine();
}

//關閉文件
sr.Close();

上述代碼將打開一個CSV文件,使用Split方法分割行數據,並將數據列印到控制台中。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/155167.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-17 02:38
下一篇 2024-11-17 02:38

相關推薦

發表回復

登錄後才能評論