0
typedef struct grid Grid;

struct grid{
    char grid[MAX_ROW][MAX_COL];
}
void storeGrid(Grid *store_grid,int row, int col){
    Grid *store_grid;
	store_grid = (Grid)malloc(sizeof(Grid));
	
	//Grid storeGrid;

    //int grid[MAX_ROW][MAX_COL];
 
    int rowNum, colNum;
    for(rowNum = 0; rowNum <= row; rowNum++){
        for(colNum = 0;colNum < col; colNum++){
            store_grid->grid[rowNum - 1][colNum] = 'a'; 
        }
    }
    // Calls the PrintGrid function, which prints out the grid
    //printGrid(storeGrid.grid,row,col); 
    
    
}

I edited this code in order to change values in the 2d array directly but this doesnt seem to be working. So i was wondering if any1 could make suggestions so that i can directly edit the 2d array in the struct rather then copies being made in the function and then dissappearing after the function has ended.

Thanks.

2
Contributors
1
Reply
3
Views
6 Years
Discussion Span
Last Post by Salem
0

These are functionally equivalent, if you want to get a grid out of storegrid back to the caller.

typedef struct grid Grid;

struct grid{
    char grid[MAX_ROW][MAX_COL];
}

void storeGrid1(Grid **result,int row, int col){
  Grid *mygrid;
  mygrid = malloc(sizeof(Grid));
  // more stuff
  *result = mygrid;
}

Grid *storeGrid2(int row, int col){
  Grid *mygrid;
  mygrid = malloc(sizeof(Grid));
  // more stuff
  return mygrid;
}

int main ( ) {
  Grid  *g1, *g2;
  storeGrid1( &g1, 3, 3 );
  g2 = storeGrid2( 3, 3 );
  free( g1 );
  free( g2 );
  return 0;
}

> store_grid->grid[rowNum - 1][colNum] = 'a';
This is an out of bound reference for the first row.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.