First, I would declare an array of appropriate size, accounting for edges. Like so.
Code:
#define GRIDH (8 + 2)
#define GRIDW (8 + 2)
char grid[GRIDH][GRIDW];
Then I would initialize the array, using a function like this.
Code:
#define CN '+'
#define HL '-'
#define VL '|'
#define BL ' '
void init_grid(int h, int w, char new_grid[GRIDH][GRIDW])
{
int i, t;
for (i = 0; i < h; ++i)
{
for (t = 0; t < w; ++t)
{
if ((i == 0 || i == (h - 1)) && (t == 0 || t == (w - 1))) /* corners */
new_grid[i][t] = CN;
else if (i == 0 || i == (h - 1)) /* top and bottom edges */
new_grid[i][t] = HL;
else if (t == 0 || t == (w - 1)) /* side edges */
new_grid[i][t] = VL;
else /* we're in the clear */
new_grid[i][t] = BL;
}
}
}
Then I would use this initialized grid to place a cursor based on user input, which would probably be defined as a structure holding XY coordinates. Before placing the cursor on the board, I would check if it is within bounds of the board.
It's up to you to implement this in a complete program.