发新话题
打印

【求助】奇怪的一个scanf问题!

【求助】奇怪的一个scanf问题!

#include<stdio.h>
# x* B" v: d  I* _* N. V) G' U$ V/ vint getopts();+ B4 J7 F" g4 S% C. a
int main ()" n9 ]3 \7 A: l# W
{. }  D- k8 G" Z( x* H& A
    int opt;. Q3 d; a( v5 q1 O3 ]0 u) |  h
    while (1) {9 v/ g" R3 q- C. Q- i4 X; [
      opt = getopts();' ]$ N0 |% x) O% q, [% C
      if (opt == 1) {- k6 i. }! C) u5 X
           puts("get here!");
% |; q( `* b$ b" Z7 x5 O           continue;
! W, |$ Z; E: B9 x' C( O' S  I4 `( C          }; T# T* A& Q( \7 \& A% u+ k4 B
          if (opt == 2)8 @( P3 K; _8 U4 h
             return 0;
1 e" C  w- E& J0 @6 v    }  `$ R) t9 f( G5 b7 V% a8 W& }# K
}
. i6 o) }0 Y/ e5 Z6 v9 q5 o2 v. aint getopts(); i! S1 [( H% l: \# F2 [$ H
{
! l5 ?7 G  K1 h    int opt;
4 w5 X* u* W) {- z3 ^    if (scanf("%d",&opt) != 1)1 V! k* ~+ a: ?1 |# Z: R
           return 0;
1 {6 c7 u# y1 J9 O" g: c     else! l  \9 W4 Z( N4 R+ w2 }1 A
          return opt;' K! F' x9 X' ?- @# Z' u) J! G3 F+ m
}
: C- E8 J4 H' v) R8 m这个程序,如果我直接输入0,会直接进入下一循环,等待输入,
$ p8 r, Q7 `: [可是如果我输入字母,虽然主函数中opt值为0,但是却进入死循环,为什么?
+ s% e) z. A/ D8 `; H4 Q  ~1 S我本来打算叫getopts直到接收到一个整数时才返回,可怎么也不行,我用scanf的返回值做控制条件也不成,谁帮下忙,看看这个问题到底在哪里?      

TOP

发新话题