我试图用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