Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Не компилируется программа со считыванием строки

#cpp #visual_studio #visual_cpp


Работаю в самой последней версии Visual Studio. Ещё при самом написании кода функция
gets "подчеркнулась" волнистой линией. Вроде бы всё в самом коде нормально. Может это
специфика самой среды или сама функция устарела... Подскажите, пожалуйста.    

#include "stdafx.h"
#include 
#include 
using namespace std;

int main() {
    char a[80];

    cout << "Vvedite stroku: ";
    gets(a);

    cout << "Vasha stroka: ";
    cout << a;

    system("pause");
    return 0;
}

    


Ответы

Ответ 1



Попробуйте cin.get(a, 80); или cin.getline(a, 80); вместо gets(a); Синтаксис: istream& getline (char* s, streamsize n ); istream& getline (char* s, streamsize n, char delim ); где s - указатель на массив char'ов, в который вы будете писать, n - максимальное количество символов, которые вы хотите записать (включая последний нулевой символ), delim - символ, нахождение которого прекращает ввод. Подробнее, но на английском тут. В VS использовать gets не выйдет: Эти функции устарели. Начиная с Visual Studio 2015 они недоступны в CRT. Безопасные версии этих функций, gets_s и _getws_s, по-прежнему доступны. Сведения об этих альтернативных функциях см. в статье gets_s, _getws_s. Подробнее по ссылке на msdn.

Ответ 2



gets(a); fgets(a, sizeof a, stdin);

Комментариев нет:

Отправить комментарий