getsは容量を超えて格納する危険があるので、通常fgetsを使う。
scanfも同様に、scanf("%4s",value);のように制限して使う。
scanfとgetsの違いは、スペースを考慮するか等。
バッファーオーバーフローとかセキュリティ上の問題もあるし、
int型のときにscanf("%d",&value)の&も忘れがちだし、
まぁ迷ったらfgetsとsscanfを組み合わせて使う方が無難。
尚、scanfは改行文字等は含まないがfgetsは改行文字も含むので注意。
ちなみにscanfを2回以上実行したい場合等には、
fflush(stdin);
等を使うと良い。
他にもwhile(getchar() != '\0') {}と記述しておけば、
1回残っているバッファ(scanf実行時の改行文字等)を消すことができる。
最終更新:2011年04月02日 16:38