【求助】奇怪的一个scanf问题!
#include<stdio.h>
: ]4 \* f% y6 P7 d! c* v& Q% u, xint getopts();
9 Y3 i7 H" O: G) d+ y5 S/ v: yint main ()5 x; v2 u* O: d' B, J/ f
{
" w+ P4 l$ ^0 I# B8 f# e& Gint opt;
2 ^. S/ h2 j" O% U: hwhile (1) {
9 G" _6 S0 A e _opt = getopts();
# p" V7 u5 @+ ?. z# gif (opt == 1) {
: u l& K' e& Y) Kputs("get here!");
& p9 I7 z6 r f/ Dcontinue;: c' J& O5 R, ?5 t
}& \+ R2 N |* w* t" s
if (opt == 2)( T. C v! p$ S4 ~5 o, o" Y0 s
return 0;1 \# `& O7 H+ Q9 x8 ? N
}- r9 Z4 ?4 A+ S0 `
}- V* U0 U6 A6 P# s" I3 X
int getopts()' j2 \) z M9 W4 P* ^( \6 [1 c
{
$ i P+ ]! j7 b* Cint opt;: j! s, \ D- N- f* _( b6 i$ A6 L" ^
if (scanf("%d",&opt) != 1)6 j( O8 V" I8 v4 ^# {/ r, K3 \
return 0;
( b2 ]+ N3 Q p K. \else' s, V5 s4 P$ Z9 Z% i2 [
return opt;* f, E* }/ ^# ^
}
( C, G: }" p/ p X5 s8 x& `这个程序,如果我直接输入0,会直接进入下一循环,等待输入,
9 M: F$ b" i5 Y) p) s* J7 }可是如果我输入字母,虽然主函数中opt值为0,但是却进入死循环,为什么?
8 O6 N/ D) V0 p: p: D我本来打算叫getopts直到接收到一个整数时才返回,可怎么也不行,我用scanf的返回值做控制条件也不成,谁帮下忙,看看这个问题到底在哪里?