Leer números separados por comas de un archivo en C

Tengo un problema al intentar leer un archivo con números separados por comas, quiero tener una función que cree matrices de enteros (sin saber cuántos parámetros tiene la matriz al principio) en un archivo como este:

1,0,3,4,5,2 3,4,2,7,4,10 1,3,0,0,1,2 

y así. El resultado que quiero es algo como

 int v[]={1,0,3,4,5,2} 

para cada línea en el archivo (obviamente con los valores en cada línea) para que pueda agregar esta matriz a una matriz. Intenté usar fscanf, pero parece que no puedo hacer que se detenga al final de cada línea. También probé fgets, strtok y muchas otras sugerencias que encontré en Internet, ¡pero no sé cómo hacerlo!

Estoy usando Eclipse Indigo en una máquina de 32 bits.

 #include  #include  int main(){ FILE *fp; int data,row,col,c,count,inc; int *array, capacity=10; char ch; array=(int*)malloc(sizeof(int)*capacity); fp=fopen("data.csv","r"); row=col=c=count=0; while(EOF!=(inc=fscanf(fp,"%d%c", &data, &ch)) && inc == 2){ ++c;//COLUMN count if(capacity==count) array=(int*)realloc(array, sizeof(int)*(capacity*=2)); array[count++] = data; if(ch == '\n'){ ++row; if(col == 0){ col = c; } else if(col != c){ fprintf(stderr, "format error of different Column of Row at %d\n", row); goto exit; } c = 0; } else if(ch != ','){ fprintf(stderr, "format error of different separator(%c) of Row at %d \n", ch, row); goto exit; } } { //check print int i,j; // int (*matrix)[col]=array; for(i=0;i 

Con el siguiente código almacenará el CSV en una matriz multidimensional:

 /* Preprocessor directives */ #include  #include  #define ARRAYSIZE(x) (sizeof(x)/sizeof(*(x))) const char filename[] = "file.csv"; /* * Open the file. */ FILE *file = fopen(filename, "r"); if ( file ) { int array[10][10]; size_t i, j, k; char buffer[BUFSIZ], *ptr; /* * Read each line from the file. */ for ( i = 0; fgets(buffer, sizeof buffer, file); ++i ) { /* * Parse the comma-separated values from each line into 'array'. */ for ( j = 0, ptr = buffer; j < ARRAYSIZE(*array); ++j, ++ptr ) { array[i][j] = (int)strtol(ptr, &ptr, 10); } } fclose(file);