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/n/155167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-17 02:38
下一篇 2024-11-17 02:38

相关推荐

  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常问题的解决

    本文旨在解决vue下载无后缀名的文件被加上后缀.txt,有后缀名的文件下载正常的问题,提供完整的代码示例供参考。 一、分析问题 首先,需了解vue中下载文件的情况。一般情况下,我们…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • Python程序文件的拓展

    Python是一门功能丰富、易于学习、可读性高的编程语言。Python程序文件通常以.py为文件拓展名,被广泛应用于各种领域,包括Web开发、机器学习、科学计算等。为了更好地发挥P…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 为什么用cmd运行Java时需要在文件内打开cmd为中心

    在Java开发中,我们经常会使用cmd在命令行窗口运行程序。然而,有时候我们会发现,在运行Java程序时,需要在文件内打开cmd为中心,这让很多开发者感到疑惑,那么,为什么会出现这…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • Python将矩阵存为CSV文件

    CSV文件是一种通用的文件格式,在统计学和计算机科学中非常常见,一些数据分析工具如Microsoft Excel,Google Sheets等都支持读取CSV文件。Python内置…

    编程 2025-04-29
  • Python zipfile解压文件乱码处理

    本文主要介绍如何在Python中使用zipfile进行文件解压的处理,同时详细讨论在解压文件时可能出现的乱码问题的各种解决办法。 一、zipfile解压文件乱码问题的根本原因 在P…

    编程 2025-04-29

发表回复

登录后才能评论