c新手吧 关注:8,586贴子:48,089
  • 22回复贴,共1

怎么读取单个字符?用scanf直接被跳过了

只看楼主收藏回复

写一个程序时出现的
int main()
{
char jixu;
/*......*/
go1:/*.......*/
/*......*/
printf(“\n是否再来一次?(Y/N):”);
go2:scanf(“%c”,&jixu);
if(jixu=='N')
return 0;
else
{
if(jixu!='Y')
{
printf(“\n输入错误,请重输”)
goto go2;
}
else
goto go1;
}
}
执行以后就好像没有scanf那句话一样,直接跳过。。求解释,另外,这些代码是手机凭回忆码的,可能会打错。。


来自Android客户端1楼2015-02-20 00:11回复
    我是新手,来长知识交流的。scanf直接跳过好像没有一样,这句话我没有太理解,不知指的是不能输入,还是什么?要是用getchar呢?


    来自手机贴吧2楼2015-02-20 00:51
    收起回复
      是没有输入就直接显示后面的输出吗?那没有输入怎么会继续进行?


      来自手机贴吧3楼2015-02-20 00:58
      收起回复
        。。。你的编译器是VS嘛。


        IP属地:四川来自Android客户端4楼2015-02-20 08:37
        收起回复
          scanf()和getchar()都要读入上次输入结束时的回车符~连用两个去除就好了,还有,尽量避免使用goto ,


          IP属地:四川来自Android客户端5楼2015-02-20 11:08
          收起回复
            就用循环语句呗,while((ch=getchar()=='\n'))
            ;可以消掉\n,代码如下
            #include<stdio.h>
            int main()
            {
            char ch;
            printf("是否再来一遍?(Y/N)\n");
            ch=getchar();
            while(ch!='N')
            {
            if(ch=='Y')
            {
            printf("是否再来一遍?(Y/N)\n");
            while((ch=getchar())=='\n')
            ;
            }else{
            printf("输入错误!请重新输入!\n");
            while((ch=getchar())=='\n')
            ;
            }
            }
            return 0;
            }


            IP属地:四川来自Android客户端6楼2015-02-20 16:40
            收起回复
              循环不用,用goto,我也是醉了→_→By the way,能告诉我小尾巴怎么设置吗?


              IP属地:江苏来自Android客户端7楼2015-02-20 20:41
              收起回复
                输入单个字符可以用getchar


                IP属地:北京来自Android客户端8楼2015-02-22 18:10
                回复