戌さんとこの問題

gccコンパイルして
動作見ただけ。
ちゃんと動くかどうかは知りません。

#include 
#include 

void draw_rhombus(int n, int count);
void draw_aster(int aster, int space);

int main(void){
  
  int  n;
  char buf[256];
  
  printf("Nの大きさを入れれ\n");
  printf("(ただし、N > 1)");
  fgets(buf, sizeof(buf), stdin);
  n = atoi(buf);

  if (!(n > 1)) {
    perror("N <= 0\n");
    return EXIT_SUCCESS;
  }
  
  draw_rhombus(n, 1);

  return EXIT_SUCCESS;

}

void draw_rhombus(int n, int count){

  int aster;
  
  aster = (count * 2) - 1; 
  
  draw_aster(aster, n - count);

  if (count >= n) {
    return;
  }
  else {
    draw_rhombus(n, (count + 1));
  }

  draw_aster(aster, n - count);
  
  return;
  
}

void draw_aster(int aster, int space) {

  int i;

  for (i = 0 ; i < space; i++) {
    printf(" ");
  }
  
  for (i = 0 ; i < aster; i++) {
    printf("*");
  }
  printf("\n");

  return;

}

無駄に再帰を使った。
意味はありません。
というか悪い例。