I am trying to create a two dimensional array, which has either 1 or 0 randomly assigned to each coordinate. It works just fine until it gets to the coordinates [20][3]. After t
C uses 0-based indexing for arrays. So, for an array defined as
int grid [x][y]
looping for
for ( i = 0; i <= x; i++)
for ( j = 0; j <= y; j++)
if off-by-one. (Note the <= part).
to elaborate, for an array of dimension p, the valid indexes are 0 to p-1, inclusive.
You should change your loop conditions as i < x and j < y to stay withing the bounds. Accessing out of bound memory causes undefined behavior.
That said,
int main() should be int main(void), at least, to conform to C standards for hosted environments.grid as VLA here. If the dimensions are already known, better approach is to use a compile-time constant (#define) to generate the array dimensions.