Skip to content

Instantly share code, notes, and snippets.

@amirmasoudabdol
Created May 19, 2014 09:59
Show Gist options
  • Save amirmasoudabdol/f1efda29760b97f16e0e to your computer and use it in GitHub Desktop.
Save amirmasoudabdol/f1efda29760b97f16e0e to your computer and use it in GitHub Desktop.
To read the CSV file in C
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void read_csv(int row, int col, char *filename, double **data){
FILE *file;
file = fopen(filename, "r");
int i = 0;
char line[4098];
while (fgets(line, 4098, file) && (i < row))
{
// double row[ssParams->nreal + 1];
char* tmp = strdup(line);
int j = 0;
const char* tok;
for (tok = strtok(line, "\t"); tok && *tok; j++, tok = strtok(NULL, "\t\n"))
{
data[i][j] = atof(tok);
printf("%f\t", data[i][j]);
}
printf("\n");
free(tmp);
i++;
}
}
int main(int argc, char const *argv[])
{
/* code */
if (argc < 3){
printf("Please specify the CSV file as an input.\n");
exit(0);
}
int row = atoi(argv[1]);
int col = atoi(argv[2]);
char fname[256]; strcpy(fname, argv[3]);
double **data;
data = (double **)malloc(row * sizeof(double *));
for (int i = 0; i < row; ++i){
data[i] = (double *)malloc(col * sizeof(double));
}
read_csv(row, col, fname, data);
return 0;
}
@Willespinosa13
Copy link

Willespinosa13 commented Jun 21, 2021

Thank you @manoharmukku.
the code is run using linux, right?

@lou8085
Copy link

lou8085 commented Jun 21, 2021

I ran it under Windows 10 using gcc

@manoharmukku
Copy link

Thank you @manoharmukku.
the code is run using linux, right?

The code can be run in any command line (terminal) which has gcc. It works for Linux, MacOS and Windows.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment