为什么 g++ 显示 "gets()" 未声明,即使包含 <cstdio>
why g++ shows "gets()" not declared ,even after including <cstdio>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char str[30];
gets(str);
}
当我使用 gets() 函数时编译器给我以下错误
error: 'gets' was not declared in this scope
我在使用 G++ 和 geany ide
由于我是初学者,请简化解决方案。
gets
是一个不安全的函数,C 标准不再支持它。
改为使用 fgets。
例如
#include <iostream>
#include <cstdio>
#include <cstring>
int main()
{
char str[30];
std::fgets(str, sizeof( str ), stdin );
str[ std::strcspn( str, "\n" ) ] = '[=10=]';
//...
}
gets
在 C++11 中被弃用并从 C++14 中移除。如果您使用的是 GCC6.0 或更新版本,则默认情况下它使用 C++14 并且将不可用。而不是使用
main()
{
char str[30];
gets(str);
}
使用
int main()
{
std::string str;
std::getline(cin, str);
}
您可以使用 scanf() 来输入字符串。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char str[30];
scanf("%s", str);
}
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char str[30];
gets(str);
}
当我使用 gets() 函数时编译器给我以下错误
error: 'gets' was not declared in this scope
我在使用 G++ 和 geany ide
由于我是初学者,请简化解决方案。
gets
是一个不安全的函数,C 标准不再支持它。
改为使用 fgets。
例如
#include <iostream>
#include <cstdio>
#include <cstring>
int main()
{
char str[30];
std::fgets(str, sizeof( str ), stdin );
str[ std::strcspn( str, "\n" ) ] = '[=10=]';
//...
}
gets
在 C++11 中被弃用并从 C++14 中移除。如果您使用的是 GCC6.0 或更新版本,则默认情况下它使用 C++14 并且将不可用。而不是使用
main()
{
char str[30];
gets(str);
}
使用
int main()
{
std::string str;
std::getline(cin, str);
}
您可以使用 scanf() 来输入字符串。
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char str[30];
scanf("%s", str);
}