游啊游 发表于 2016-9-10 17:31:45

关于gets函数

#include<iostream>
#define NUM 20
using namespace std;
int main()
{
        int n;
        int na,nb;
        cin>>n;
        while(n--)
        {
                cout<<"字符串1"<<endl;
                char a;
                gets(a);
                cout<<"字符串2"<<endl;
                char b;
                gets(b);
                na=strlen(a);
                nb=strlen(b);
                cout<<na<<" "<<nb<<endl;
        }
        return 0;
}

我原意是想输入n组数据,每一组输入两个字符串分别求其长度
可是运行结果是这样的,没有给我输入第一组字符串1的机会

mingcxx 发表于 2016-9-10 17:55:45

cin>>n;之后,遗漏了换行符在缓冲区,为了不影响gets()获取一行字符串,先剔除换行符:while(getchar()! = '\n')
                ;#include<iostream>
#define NUM 20
using namespace std;
int main()
{
      int n;
      int na,nb;
      cin>>n;
        while(getchar()! = '\n')
                ;
      while(n--)
      {
                cout<<"字符串1"<<endl;
                char a;
                gets(a);
                cout<<"字符串2"<<endl;
                char b;
                gets(b);
                na=strlen(a);
                nb=strlen(b);
                cout<<na<<" "<<nb<<endl;
      }
      return 0;
}

游啊游 发表于 2016-9-10 18:22:35

mingcxx 发表于 2016-9-10 17:55
cin>>n;之后,遗漏了换行符在缓冲区,为了不影响gets()获取一行字符串,先剔除换行符:

谢谢
页: [1]
查看完整版本: 关于gets函数