Chinaunix

标题: 请教C关于gets的问题。 [打印本页]

作者: ilikerome    时间: 2012-03-22 09:53
标题: 请教C关于gets的问题。
本帖最后由 ilikerome 于 2012-03-22 10:22 编辑

代码见最下面。
功能:1、从终端得到两个字符串,比较大小;
      2、一次比较结束以后询问是否继续,供操作者选择;

我的问题:1、第一次运行exe,提示输入数组a的内容,如下图,ok。

              2、接着输入数组b的内容,如下图,ok。

              3、比较结果出来了,提示选择是否继续,输入Y,继续。如下图。

             4、问题就在这一步,输入Y并回车以后,并没有回到步骤1---输入数组a,而是直接打印出
             please input array a:
             please input array b:
             光标停在b这里,数组a没法输入啊,如下图。


请各位指点是为什么?
谢谢!
              


#include <stdio.h>

int main()
{
        char a[80];
        char b[40];
        int i;
        char c;
        int flag;
        flag=1;

        while(flag==1)
        {
                i=0;

                printf("\nplease input array a:");
                gets(a);

                printf("\nplease input array b:");
                gets(b);

                while(a!='\0'&&a==b)
                        i++;
                printf("the result is %d\n",a-b);

                printf("继续吗?");
                c=getchar();
                if(c=='n'||c=='N')
                        flag=0;
        }

}
作者: KBTiller    时间: 2012-03-22 10:18
回复 1# ilikerome

代码中没看到有scanf()啊


   
作者: hbmhalley    时间: 2012-03-22 10:22
c=getchar()读了'y'但没读回车 于是a=="\n"
作者: ilikerome    时间: 2012-03-22 10:24
KBTiller 发表于 2012-03-22 10:18
回复 1# ilikerome

代码中没看到有scanf()啊


不好意思,写错了,是gets,谢谢指出。
作者: ilikerome    时间: 2012-03-22 10:46
回复 3# hbmhalley

请问怎么解决这个问题?想了半天也不知道怎么办。


   
作者: KBTiller    时间: 2012-03-22 10:50
ilikerome 发表于 2012-03-22 10:24
不好意思,写错了,是gets,谢谢指出。



  c=getchar();
后面加一句
   while( getchar() != '\n' )
         ;
就可以了


不过代码的其他毛病似乎还不少


作者: hbmhalley    时间: 2012-03-22 10:53
回复 5# ilikerome


    c=getchar();getchar();
作者: ilikerome    时间: 2012-03-22 11:16
两位的都可以,原理我也明白了,非常感谢。
#include <stdio.h>

int main()
{
        char a[80];
        char b[40];
        int i;
        char c;
        int flag;
        flag=1;

        while(flag==1)
        {
                i=0;

                printf("\nplease input array a:");
                gets(a);

                printf("\nplease input array b:");
                gets(b);

                while(a[i]!='\0'&&a[i]==b[i])
                        i++;
                printf("the result is %d\n",a[i]-b[i]);

                printf("继续吗?");
                c=getchar();
                                //getchar();

                                while(getchar()!='\n')
                                        ;
                if(c=='n'||c=='N')
                        flag=0;
        }

}




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2