为什么第一个get()在这段代码中不起作用? 我已经尝试过使用DEV C++和代码::在多个程序中使用代码,但是在CIN > 之后,第一个GETSH()命令永远不会被执行。 #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; } #包括 #包括 使用名称空间std; int main() { int i; 字符c[10],d[10]; 库蒂; cout

为什么第一个get()在这段代码中不起作用? 我已经尝试过使用DEV C++和代码::在多个程序中使用代码,但是在CIN > 之后,第一个GETSH()命令永远不会被执行。 #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; } #包括 #包括 使用名称空间std; int main() { int i; 字符c[10],d[10]; 库蒂; cout,c++,C++,Gets不是“notget executed”,而是返回一个空字符串。这是因为cin将光标留在它完成读取的行上。您应该以任何可能的方式读取这一行,例如使用相同的Gets将其读取到某个缓冲区永远不要使用Gets,它是旧C时代的遗物。它已损坏函数,这是非常容易出现缓冲区溢出的。如果你使用C,我建议你使用 FGES。但是,既然你使用C++,我想你必须使用 CIN < /> >用 STD::String < /Cord>代替原来的代码> char 字符串。@ USS6947 33 OP的问题不是关于GE

Gets不是“notget executed”,而是返回一个空字符串。这是因为
cin
将光标留在它完成读取的行上。您应该以任何可能的方式读取这一行,例如使用相同的
Gets
将其读取到某个缓冲区

永远不要使用
Gets
,它是旧C时代的遗物。它已损坏函数,这是非常容易出现缓冲区溢出的。如果你使用C,我建议你使用<代码> FGES。但是,既然你使用C++,我想你必须使用<代码> CIN < /> >用<代码> STD::String < /Cord>代替原来的代码> char 字符串。@ USS6947 33 OP的问题不是关于GET的不安全,而是关于错误。不管它是如何工作的,他在cin.getLine()或其他方面也会遇到同样的问题else@DenisSheremet因此是注释,而不是答案。但无论如何,使用
get
仍然是错误的,因为这是一个相当糟糕的函数。