C语言读取CSV中的数值型数据(double) fscanf

来源:互联网 发布:剑雨江湖数据晋级 编辑:程序博客网 时间:2024/05/29 18:31


#include <stdlib.h>#include<stdio.h>#include <iostream>using namespace std;double ** my_readcsv(char *path, int ROWS, int COLS){    FILE *fp = NULL;    fp = fopen(path, "at+");    if ( NULL == fp )    {            cout << "Failed to open " << path << endl;    }    double *arr1=NULL;    arr1 = (double *)malloc(ROWS*COLS*sizeof(double));    double **arr2=NULL;    arr2 = (double **)malloc(ROWS*sizeof(double *));    for(int r=0; r<ROWS; r++)    {    arr2[r] = arr1 + r*COLS;    }    char d;    int ret=1;    int i = 0;    while ( ret != EOF && i < ROWS )    {    for(int j=0; j<COLS; j++)    {            ret = fscanf( fp, "%lf", &arr2[i][j]);            ret = fscanf( fp, ",", &d);    }    i++;    }    fclose(fp);    return arr2;}int main(){int ROWS=16;int COLS=16;char path[260];double **arr2=NULL;strcpy(path, "/home/zlf/Documents/code/MTF/MTF_rac.csv");arr2=my_readcsv(path, ROWS, COLS);    printf("\n%s: \n", path);    for(int i=0; i<ROWS; i++)    {    for(int j=0; j<COLS; j++)    {    printf("%f  ", arr2[i][j]);    }    printf("\n");    }return 0;}