Форум программистов, компьютерный форум CyberForum.ru

Ругается на gets() - C++

Восстановить пароль Регистрация
 
kirill1059
 Аватар для kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
06.01.2014, 19:36     Ругается на gets() #1
Добрый вечер, рассматривал функцию gets()
Но при компиляции программы выдаёт ошибку

Код
warning C4996: 'gets': This function or variable may be unsafe. Consider using gets_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          d:\disk кирилл\программы\microsoft visual studio\vc\include\stdio.h(277): см. объявление "gets"
Программа запускается но работает не корректно.
Когда вожу два слово и нажимаю Enter, то просит ещё раз ввести слово. Когда ввожу второй раз два слова, то он выводит только первое слово и всё.

Возможно что компилятор не поддерживает эту функцию, но он как бы стандартная в библиотеке c++.

Вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdio>
using namespace std;
 
int main() {
    setlocale (LC_ALL, "Rus");
 
    char str[80];
 
    cout << "Введите ваше слово: ";
    gets(str);
    cin >> str;
    cout << "Вот ваша строка";
    cout << "\n";
    cout << str;
    cout << "\n";
 
    system("pause");
    return 0;
}
Спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 19:36     Ругается на gets()
Посмотрите здесь:

ругается на M_PI C++
C++ Ругается на If
C++ Нетбинс ругается
C++ VS ругается на ошибки
C++ Компилятор не ругается
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.01.2014, 19:45     Ругается на gets() #2
Цитата Сообщение от kirill1059 Посмотреть сообщение
выдаёт ошибку
Это не ошибка, предупреждение (заморочки MS), в данном случае, можно игнорировать.

Добавлено через 1 минуту
Цитата Сообщение от kirill1059 Посмотреть сообщение
работает не корректно.
Цитата Сообщение от kirill1059 Посмотреть сообщение
gets(str);
cin >> str;
Зачем два ввода?
kirill1059
 Аватар для kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
06.01.2014, 20:01  [ТС]     Ругается на gets() #3
alsav22, то есть
C++
1
gets(str)
это и есть ввод?)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.01.2014, 20:10     Ругается на gets() #4
Цитата Сообщение от kirill1059 Посмотреть сообщение
это и есть ввод?)
Да. Не знали? А как же тогда:
Цитата Сообщение от kirill1059 Посмотреть сообщение
рассматривал функцию gets()
kirill1059
 Аватар для kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
06.01.2014, 20:14  [ТС]     Ругается на gets() #5
alsav22, значит не так понял как в книге написано)))
Ну спасибо) буду знать)
alsav22
06.01.2014, 20:20
  #6

Не по теме:

На здоровье! Вот тут информация по всем функциям, классам и пр.: http://www.cplusplus.com/reference/cstdio/gets/

gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.01.2014, 23:10     Ругается на gets() #7
kirill1059, вообще gets действительно "опасна", её даже убрали из С; легко заменяется стандартной fgets, расширения MS не нужны.
alsav22
06.01.2014, 23:13
  #8

Не по теме:

Цитата Сообщение от gray_fox Посмотреть сообщение
её даже убрали из С
Каким образом? Не включили в С++11?

gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
06.01.2014, 23:19     Ругается на gets() #9

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Каким образом?
В С11 её уже нет.



Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Не включили в С++11?
Без понятия.

alsav22
06.01.2014, 23:27
  #10

Не по теме:

Цитата Сообщение от gray_fox Посмотреть сообщение
Без понятия.
Как так? Ну, раз
Цитата Сообщение от gray_fox Посмотреть сообщение
В С11 её уже нет.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 23:29     Ругается на gets()
Еще ссылки по теме:

Ругается на библиотеку C++
C++ Ругается dev c ++
Почему ругается на else? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gray_fox
06.01.2014, 23:29     Ругается на gets()
  #11

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
Как так?
С, не С++.

Yandex
Объявления
06.01.2014, 23:29     Ругается на gets()
Ответ Создать тему
Опции темы

Текущее время: 12:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru