【发布时间】:2017-03-15 18:08:10
【问题描述】:
当我编写此代码时,我无法通过 gets() 函数输入两行作为输入,其中每行包含 3 到 5 个单词:
int main()
{
int t;
cin>>t;
char nm1[50],nm2[50];
while(t--)
{
gets(nm1);
gets(nm2);
puts(nm1);
puts(nm2);
}
}
但是当我在 while() 函数之前添加一个 gets() 函数时,现在我可以输入两行这样的字符串:
int t;
cin>>t;
char nm1[50],nm2[50];
gets(nm1); //using gets() function here//
while(t--)
{
gets(nm1);
gets(nm2);
puts(nm1);
puts(nm2);
}
那么,这背后的逻辑是什么?
【问题讨论】:
-
你为什么会考虑使用gets()? stackoverflow.com/questions/30890696/why-gets-is-deprecated
-
不要在 C++ 中使用
gets。它在 C++11 中已弃用,并在 C++14 及更高版本中被删除。 -
gets函数很危险,因为它会溢出缓冲区。如果必须,请改用fgets。更喜欢在 C++ 中使用std::string来处理文本。 -
因为我必须输入两行,每行包含五个单词。
-
你的
main函数应该返回一个值给操作系统,比如0代表成功,其他数字代表失败。