Two Dimensional Arrays

#include <stdio.h>
#include "myio_c.h"

#define  COL  5

void fill_1d_all(int [], int, int);

void fill_2d_all(int [][COL], int, int, int, int);
void write_2d(int [][COL], int, int, int, int);

void fill_2d_part(int [][COL], int, int, int, int, int *);

int main(void)
{
  int table[4][COL];
  int rows, i;
  
  fill_2d_all(table, 0, 3, 0, COL - 1);
  write_2d(table, 0, 3, 0, COL - 1); 

  fill_2d_part(table, 0, 3, 0, COL - 1, &rows);
  write_2d(table, 0, rows, 0, COL - 1);
   
  for (i = 0; i <= 3; i++) 
    fill_1d_all(table[i], 0, COL - 1);

  write_2d(table, 0, 3, 0, COL - 1); 

  return (0);
}


void fill_1d_all(int array[], int low, int high)
{
  int i;

   for (i = low; i <= high; i++)
   {
     printf("\nEnter a value for element #%d: ", i + 1);
     get_int(&array[i]);
   }
}


void fill_2d_all(int array[][COL], int lrow, int hrow, int lcol, int hcol)
{
  int i, j;

  for (i = lrow; i <= hrow; i++)
  {
    printf("\nEnter values for row %d: ", i + 1); 
    for(j = lcol; j <= hcol; j++)
      get_int(&array[i][j]); 
  }
}


void write_2d(int array[][COL], int lrow, int hrow, int lcol, int hcol)
{
  int i, j;

  for (i = lrow; i <= hrow; i++)
  {
    printf("\n"); 
    for(j = lcol; j <= hcol; j++)
      printf("%d\t",  array[i][j]); 
  }
}

void fill_2d_part(int array[][COL], int lrow, int hrow, 
                  int lcol, int hcol, int *actual_row)
{
  int i, j;
  int temp, stop_value = -1;

  i = lrow;
  do
  {
    printf("\nEnter values for row %d or %d to quit ", i + 1, stop_value); 
    get_int(&temp); 
    if (temp != -1)
    {
       array[i][lcol] = temp;
       for(j = lcol + 1; j <= hcol; j++)
         get_int(&array[i][j]); 
       i++;
    }
  }
  while ((i <= hrow) && (temp != stop_value));
  *actual_row = i - 1;
}