Talvez isso ajude:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#define MAX_COLUMNS 15
int tmpline[MAX_COLUMNS]; /* Contém uma linha temporária */
int **matrix = NULL; /* Eis a matriz */
int num_lines = 0; /* Numero de linhas da matriz. */
/* Funções auxiliares */
int *add_line(void);
int readline(FILE *, int *);
int main(int argc, char **argv)
{
FILE *f;
int *p;
f = fopen(argv[1], "rt");
if (f == NULL)
{
fprintf(stderr, "Error opening input file.\n");
return EXIT_FAILURE;
}
while (readline(f, tmpline))
{
p = add_line();
if (p == NULL)
{
fprintf(stderr, "Error allocating line.\n");
memcpy(p, tmpline, MAX_COLUMNS * sizeof(int));
}
}
fclose(f);
/* Neste ponto, seu array de int's deve conter a matriz */
return EXIT_SUCCESS;
}
int readline(FILE *f, int *data_ptr)
{
int i;
char buffer[1024];
char *p;
if (fgets(buffer, 1024, f) != NULL)
{
p = strtok(buffer, ",");
for (i = 0; p != NULL && i < MAX_COLUMNS; i++)
{
data_ptr[i] = atoi(p);
p = strtok(NULL, ",");
}
return 1;
}
return 0;
}
int *add_line(void)
{
int **p, *p2;
int n;
n = num_lines + 1;
p = realloc(matrix, sizeof(int *)*n);
if (p == NULL)
return NULL;
p2 = malloc(sizeof(int)*MAX_COLUMNS);
if (p2 == NULL)
return NULL;
matrix = p;
matrix[num_lines] = p2;
num_lines = n;
return p2;
}