Search code examples
cgccmallocoutputfree

Add elements to two-dimensionals dynamical table


There is two-dimensional, dynamical allocated table. Put elements inside to table and print them. Code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int **tab;
    int ROWS=3;
    int COLUMNS=5;
    tab = (int**) malloc(ROWS * sizeof(int*));
    int i=0;
    for(i=0;i<ROWS; ++i)
    {
        tab[i] = (int*)malloc(COLUMNS * sizeof(int));
    }

    i=0;
    int j=0;
    for(;i<ROWS;++i)
    {
        for(;j<COLUMNS;++j)
        {
            tab[i][j]=6;
        }
    }

    i=0; j=0;
    for(;i<ROWS;++i)
    {
        for(;j<COLUMNS;++j)
        {
            printf("%i ", tab[i][j]);
        }
    }

    i=0;
    for(;i<ROWS;++i)
    {
        free(tab[i]);
    }
    free(tab);
}

Output Only one row?:

6 6 6 6 6

Output should looks like! (3 rows with 5 columns of 'six'):

6 6 6 6 6

6 6 6 6 6

6 6 6 6 6


Solution

  • Initialize inner loop from zero.

     for(;i<ROWS;++i)
        {
            for(j=0;j<COLUMNS;++j)
            { //^^^ Initialize j = 0
                tab[i][j]=6;
            }
        }
    
        i=0; j=0;
        for(;i<ROWS;++i)
        {
            for(j=0;j<COLUMNS;++j)
            { //^^^ Initialize j = 0
                printf("%i ", tab[i][j]);
            }
            printf("\n");
        }