>>846

名誉挽回。

入力文字列を読みこむのに十分な大きさの領域が確保されている場合、
fgets で読みこまれるのは、改行文字まで。その後にヌル文字を付加する。

$ abc[return]

とした場合、用意した領域には

'a', 'b', 'c', '\n', '\0'

と格納される。
の場合だと、

$ 1[return]

とした場合は、

'1', '\n', '\0'

と格納されるはず。

が、 >>846 のコードでは 1 文字分しか取られていない( fgets の第2引数 )。従って、

誤: fgets(select, 1, stdin);
正: fgets(select, 10, stdin);

とすれば良い。

一般的には fgets の第2引数は確保した領域の大きさを使う。

後は >>847 も参考に。