почему g ++ показывает, что «gets ()» не объявлено, даже после включения <cstdio> - PullRequest
0 голосов
/ 06 февраля 2020
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

int main()
{
    char str[30];
    gets(str);
}

когда я использую функцию get (), компилятор выдает мне следующую ошибку

error: 'gets' was not declared in this scope

я использовал G ++ с geany ide

, пожалуйста, сделайте решение простым, потому что я новичок .

Ответы [ 2 ]

5 голосов
/ 06 февраля 2020

gets устарела в C ++ 11 и удалена из C ++ 14. Если вы используете GCC6.0 или новее, то по умолчанию он использует C ++ 14 и не будет доступен. Вместо использования

main()
{
    char str[30];
    gets(str);
}

используйте

int main()
{
    std::string str;
    std::getline(cin, str);
}
3 голосов
/ 06 февраля 2020

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" ) ] = '\0';

    //...
}
...