上のほうにも似た質問があるんですが、標準入力から文字列を入力する際、
入力された文字列が配列の範囲を越えてしまった時に、警告を出した上で
もう一度入力させるにはどうすればいいでしょうか?

void main(void){

 int i, j;
 char str[5][20];
 char buf[20];

 for (i = 0; i < 5; i++){
  while (1){
   fflush(stdin);
   fgets(buf, sizeof(buf), stdin);
   if (sscanf(buf, "%s", str[i]) == 1)
    break;
   printf("もう一度入力して下さい。\n");
 }
}

今はこんな感じで作ってます。
空白だけを入れた場合の警告は出るようにしています。
しかし、配列の上限を越えた入力をチェックする方法が解からず、
しょうがないのでループの先頭でバッファに溜まった分を切り捨てるようにしています。
これを解決するスマートな方法ってないですかね。。。