c++ - 为什么第一个 gets() 在此代码中不起作用?

标签 c++

我已经使用 dev c++ 和 code::Blocks 尝试过这段代码(在多个程序中),但是第一个 gets() 命令在后面跟着 cin 时永远不会执行>>

#include<iostream>
#include<stdio.h>

using namespace std;
int main()
{
int i;
char c[10], d[10];
cout<<"Enter int ";
cin>>i;
cout<<"Enter string ";
gets(c); // this is where things act all possessed
cout<<"Enter 2nd string ";
gets(d);
cout<<i<<endl<<c<<endl<<d;
return 0;
}

请帮帮我

我尝试过的:

我试过将变量 i 作为 char,然后仅使用 gets() 获取输入,这完美地工作 但在某些程序中,我严格需要将它作为一个整数,以便能够执行递增/递减/任何操作

最佳答案

Gets 不是'没有被执行',而是返回一个空字符串。发生这种情况是因为 cin 将光标留在完成读取的行。您应该以任何可能的方式阅读这一行,例如使用相同的 gets 读取它到某个缓冲区

关于c++ - 为什么第一个 gets() 在此代码中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40460885/

相关文章:

c++ - GDI+ 双缓冲

c++ - strcpy 似乎与之前在 Arduino 上的连载搞混了

c++ - 我的 QT 设计器插件找不到外部组件

c++ - 使用链接列表插入 Pop 功能

c++ - virtual constexpr 函数如何实现?

c++ - 从 shell 调用脚本和使用 system() 有什么区别?

c++ - g++ ld 共享库错误代码:: block

c++ - <未解析的重载函数类型> 调用二元谓词

c++ - 是否可以在没有 pthread 的情况下构建 protobuf?

C++:如何一次输出两个字母的字符串?