2016-11-07 66 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讀取到某個緩衝區

相關問題