scanf()とgets()

すぐ忘れるのでメモ。
単純にまとめておくと
・gets()の方が速い
・scanf()の方がフォーマットを高度に指定できる
俺の中で入力関数といえば、なぜかscanf()
はじめて習った関数だからかなぁ。
つーか、int値を直接入力するときってscanf()の方が楽じゃね?
gets()使うと文字列に一旦格納したあと、atoi()しないとだめだし。
でも、scanf()にて%d指定でint値の入力を待ってるときに、アルファベット入力されるとエラー処理に困るんだけど。
アルファベット入力されたら、scanfは0を返すはずなんだけど、うまく拾えない・・・・。

int num;
if(scanf("%d",&num) == 0){
  エラー処理
}

じゃダメなのかなぁ。
うーむ。謎。
おとなしくgets()でエラー処理書くか・・・・。
※追記
gets()とatoi()の組み合わせでエラー処理をする場合、atoi()のエラー時の戻り値が0なので、入力として0を扱うようにしていると、正常なのかエラーなのか判断がつかなくなる。0じゃなくてEOFとか返してくれりゃいいのに・・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です