Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
kirill1059
14 / 14 / 2
Регистрация: 16.04.2013
Сообщений: 370
#1

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

06.01.2014, 19:36. Просмотров 748. Ответов 10
Метки нет (Все метки)

Добрый вечер, рассматривал функцию 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;
}
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 19:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ругается на gets() (C++):

Ругается на If - C++
#include&lt;iostream&gt; using std::cin; using std::cout; using std::endl; int main() { cout&lt;&lt;&quot;Введите число:\n&quot;; int age; ...

Ругается компилятор - C++
Компилирую программу: // Proba2.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;vector&gt;...

Ругается на функцию - C++
В чём тут ошибка? #include &lt;iostream&gt; #include &lt;string&gt; const int n=3;

Ругается в 3 местах - C++
Помогите понять почему он ругается на в указанных местах? main.cpp #include &quot;Student.h&quot; int main() { setlocale(LC_ALL,...

ругается на clrscr() - C++
запускаю в CodeBlocks Ругается на clrscr(); Если удалить её то ругается на gotoxy(35,12); В чем проблема подскажите? ...

Ругается компилятор - C++
Создать класс жидкость, имеющий название (указатель на строку), плотность. Определить конструкторы, деструктор и операторы вывода в поток....

10
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.01.2014, 19:45 #2
Цитата Сообщение от kirill1059 Посмотреть сообщение
выдаёт ошибку
Это не ошибка, предупреждение (заморочки MS), в данном случае, можно игнорировать.

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

Не по теме:

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

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

Не по теме:

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

0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
06.01.2014, 23:19 #9

Не по теме:

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



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

Не по теме:

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

0
alsav22
06.01.2014, 23:27
  #10

Не по теме:

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

0
gray_fox
06.01.2014, 23:29     Ругается на gets()
  #11

Не по теме:

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

1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.01.2014, 23:29
Привет! Вот еще темы с ответами:

Компилятор не ругается - C++
Компилятор по разному реагирует на 2 указателя на строки (см.комментарии). В связи с этим появился вопрос - где хранятся аргументы...

Почему ругается на else? - C++
Народ, подскажите пожалуйста, почему компилятор ругается на функцию &quot;else&quot;? #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

Ругается на if (a>M_PI) - C++
#include &lt;math.h&gt; есть.

VS ругается на ошибки - C++
вот программа: // money 1.0.0.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; ...


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

Или воспользуйтесь поиском по форуму:
11
06.01.2014, 23:29
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru