关于cin.getline()函数的问题

baidu_33850850 2017-09-23 07:57:28
虽然我用gets()函数可以解决,但是我想知道为什么我用cin.getline()就直接跳过不执行了
int main()
{
char ch[50];
char code[N];
while(1)
{
gets(ch);
if(strcmp(ch,"START")==0)
{
cin.getline(code,N); }
if(strcmp(ch,"ENDOFINPUT")==0)
break;
gets(ch);
if(strcmp(ch,"END")==0)
{

Ccode(code);
}
}
return 0;
}
...全文
182 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
似缘非缘 2017-09-26
  • 打赏
  • 举报
回复
#include <string.h>
#include <iostream>
using namespace std;

#define N (200)

// 假设函数是这样
void Ccode(char code[])
{
cout << code << endl;
}

int main()
{
char ch[50];
char code[N];
while(1)
{
cout << "input ch~~~~~~~~~~~1\n";
//gets(ch);
cin.getline(ch, 50);
if(strcmp(ch,"START")==0)
{
cout << "input code~~~~~~~~~~~1\n";
cin.getline(code,N);
}
else if(strcmp(ch,"ENDOFINPUT")==0)
break;
cout << "input ch~~~~~~~~~~~2\n";
//gets(ch);
cin.getline(ch, 50);
if(strcmp(ch,"END")==0)
{
Ccode(code);
}
}
return 0;
}


虽然不知道你的需求,但是在尽量不修改你逻辑的情况下,我测试了,是可以用getline函数的啊。
贴出结果:
paschen 2017-09-25
  • 打赏
  • 举报
回复
解决什么,应该是缓冲区中还留下了换行符,被后面的getline接收了
赵4老师 2017-09-25
  • 打赏
  • 举报
回复
提醒:cin.getline()是开源的。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧