2016-11-07 50 views
1

我一直在使用开发的C++代码,并尝试这种代码(在多个程序):: Blocks的,但首先获得(),随后当由CIN命令将永远不会得到执行>>为什么第一个get()在这段代码中不起作用?

#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,然后拍摄只用得到()的,它完美的作品 输入但后来我严格需要把它作为一个整数,在一些程序中,能够做东西李ke增量/减量/任何

+3

永远不要使用'gets',它是旧C时代的遗物。它是破碎的函数,很容易发生缓冲区溢出。如果你使用C,我会建议你使用'fgets'来代替。但是因为你使用的是C++,所以我认为你必须用'cin'和'std :: string'来代替简单的'char'字符串。 – user694733

+0

@ user694733 OP的问题不是关于get的不安全性,而是关于它如何工作的误解。他会得到与cin.getLine()或其他任何其他问题 –

+0

@DenisSheremet因此评论,而不是一个答案。但是,无论如何,使用'gets'仍然是错误的,因为它非常糟糕。 – user694733

回答

1

获取不是'未执行',但返回一个空字符串。发生这种情况是因为cin将光标留在读完的行。你应该用任何可能的方式阅读这一行,例如用相同的gets读取到某个缓冲区

相关问题