在code:Blocks用C语言读取csv文件并输出

读取文件的格式,第一行是列表名:
列表名

原文件
代码如下:

#include <stdio.h>
#include <stdlib.h>

#define MAX_COLUMNS 10
#define MAX_ROWS 100

int main() {
    FILE *file = fopen("D:\\research\\demor\\model\\em100.csv", "r");

    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }

    // 读取第一行,即列标明
    char line[1024];
    fgets(line, sizeof(line), file);

    // 使用sscanf解析列标明
    char columnNames[MAX_COLUMNS][256];
    int numColumns = sscanf(line, "%s %s %s", columnNames[0], columnNames[1], columnNames[2]);

    // 读取数据并保存为数组
    double data[MAX_ROWS][MAX_COLUMNS];
    int numRows = 0;

    while (fgets(line, sizeof(line), file) != NULL && numRows < MAX_ROWS) {
        sscanf(line, "%lf,%lf,%lf", &data[numRows][0], &data[numRows][1], &data[numRows][2]);
        numRows++;
    }

    // 关闭文件
    fclose(file);

    // 打印列标明
    for (int i = 0; i < numColumns; i++) {
        printf("%-15s", columnNames[i]);
    }
    printf("\n");

    // 打印数据
    for (int i = 0; i < numRows; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%-15.6f", data[i][j]);
        }
        printf("\n");
    }


    return 0;
}


问题:一开始总是出现错误的是输出的文件格式第二列,第三列为0
原因:是因为读取文件格式有问题
原因图片
原代码是

sscanf(line,"%lf  %lf  %lf", &data[numRows][0], &data[numRows][1], &data[numRows][2])

用空格读取了,但是csv在notepad打开的时候,中间是用逗号隔开的。

引用代码,运行成功输出如下:
表名
输出结果
错误解决参考:读取csv之间是用逗号隔开的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值