>char gazo[1000][1000];
>n = 5;
↑
なぜ#defineしないですか。

for (i = 0; i <= (n-1); i++) {
for (j = 0; j <= (n-1); j++){
↑
なぜ素直に i < n で判断しないですか。

>if (i == 0 || i == (n-1) || j == 0 || j == (n-1))
>gazo[i][j] = '*';
>else
>gazo[i][j] = ' ';
↑
なぜわざわざ複雑な条件で'*'や' 'を代入するですか。
もっと簡単に方法があると思うです。

>printf("%s", gazo[i][j]);
↑
>>135さんの言うとおり、printf()を調べるです。
"文字"と(C言語で言うところの)”文字列”の違いって分かるですか?