Как перебрать неравномерный массив в C? - PullRequest
0 голосов
/ 04 марта 2020

Я попытался разобрать следующий текстовый файл и сохранить значения из каждой строки в 2d массив. Однако теперь я не уверен, как перебрать все значения, хранящиеся в массиве, так как массив не является однородным. Спасибо

2
1 1
1 -1
1 -2 1 1
3 5 6
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int** openfile(char* filename,int* numb, int* l)
{
    FILE* fp;
    fp=fopen(filename,"r");
    char stream[BUFSIZ];
    int** lines=malloc(sizeof(int*));
    char* integer;
    int line_count=0;
    while(fgets(stream,sizeof(stream),fp )!=NULL)
    {   
        integer=strtok(stream," ");
        int i_count=0;
        lines=realloc(lines,(line_count+1)*sizeof(char*));

        while(integer!=NULL)
        {   
            lines[line_count]=realloc(lines[line_count], (i_count+1) * sizeof(int) );   
            lines[line_count][i_count]=atoi(integer);
            i_count++;  
            integer=strtok(NULL," ");   
        }
            line_count++;
        *numb=i_count;
        *l=line_count;

    }   
    return lines;

}
void pr(int** a,int line,int numb)
{
    for(int i=0;i<line;i++){
        for(int j=0;j<sizeof(a)/sizeof(a[0]);j++){
            printf("%d\n",a[i][j]);
            }
    }
}
int main(int c, char** v)
{
    int line=0;
    int numb=0;
    int** a=openfile(v[1],&numb,&line);
    printf("%d\n",line);
    pr(a,line,numb);

}
...