#include <stdio.h>

void spiral(int n,int m,int arr[][m])
{
	int top = 0,			
		right = m - 1,		
		bottom = n - 1,		
		left = 0, 
		k;  

	while( top <= bottom  &&  left <= right )
	{
		//print top row
		for ( k = left; k <= right; k++ )
		{
			printf("%d  ",arr[top][k]);
		}
		++top;

		//print right column
		for( k = top; k <= bottom; k++ )
		{
			printf("%d   ",arr[k][right]);
		}
		--right;

		//print bottom row
		for( k = right; k >= left; k-- )
		{
			printf("%d   ",arr[bottom][k]);
		}
		--bottom;

		//print left column
		for( k = bottom; k >= top; k-- )
		// this was wrong ^^^^^^ in OP's code
		{
			printf("%d   ",arr[k][left]);
		}
		++left;
	}
}

int main(void) {
	int rows = 4, cols = 5;
	int board[rows][cols];
	
	printf("Original:\n");
	for ( int i = 0; i < rows; ++i ) {
		for ( int j = 0; j < cols; ++j ) {
			board[i][j] = 1 + i*cols + j;
			printf("%d ", board[i][j]);
		}
		printf("\n");
	}
	printf("\nSpiral printing:\n");
	spiral(rows,cols,board);
	return 0;
}
