我試圖用gets()
函數輸入數據,但是每當程序執行到gets
留置權時,它都會忽略它。如何在之前的輸入之後使用C++中的「gets」函數?
當我使用gets()
沒有以前的數據輸入,它運行正常。但是當我在數據輸入後使用它時,問題就會發生。
這裏就是它以前的數據輸入後使用的代碼(所以在執行我不能輸入數據串):
int main() {
char str[255];
int a = 0;
cin >> a;
if(a == 1) {
gets(str);
cout << "\n" << str << endl;
}
}
我怎麼能解決這個問題?
注:同樣的情況與cin.getline
你不使用gets(),永遠!從根本上講,這是不安全的,也是不可能的。另外,不要混合使用C和C++ I/O。現在對於cin.getline,這是一個更有趣的問題,我只是在這裏回答:http://stackoverflow.com/questions/16405630/infile-open-refuses-to-read-the-variable-in-the-file – 2013-05-06 20:04:37
從來沒有,永遠不會使用'gets'。您無法可靠地避免超出緩衝區並造成各種麻煩。至少使用'fgets',但在C++中,你幾乎總是會更好地使用'std :: getline(cin,a_std_string_variable)'。 – cHao 2013-05-06 20:04:43
爲什麼這個問題的標題說C,但標籤說C++? – 2013-05-06 20:06:09