Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 467
1

Компилятор выдаёт ошибку error C4996: 'strcpy': This function or variable may be unsafe

04.04.2016, 21:09. Просмотров 405. Ответов 6
Метки нет (Все метки)

Добрый день!
Помогите , пожалуйста, узнать в чём проблема. Код взят из книги. Мне он не очень нравится, были мысли что где-то есть опечатка. ввёл код и он не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cstring> 
using namespace std;
char * getname(void); 
int main()
{
    char * name;
    name = getname();
    cout << name << "at" << (int*)name<<"\n";
    delete[]name;
    name = getname(); 
    cout << name << "at" << (int*)name << "\n";
    delete[]name;
    return 0;
    
}
char * getname()
{
    char temp[80]; 
    cout << "Enter last name:"; 
    cin >> temp;
    char * pn = new char[strlen(temp) + 1];
    strcpy(pn, temp);
    return pn;
}
Компилятор выдаёт ошибку error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2016, 21:09
Ответы с готовыми решениями:

Выдает ошибку: error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead
Уважаемые форумчане! У меня не работает программа. Все написано &quot;вроде&quot;...

Error C4996: 'strcpy': This function or variable may be unsafe
Классы: Ток-шоу, Развлекательная передача, Телеканал, СМИ (средство массовой...

Ошибка error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead
#include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;fstream&gt; #include&lt;string&gt;...

Копирование строк - error C4996: 'strcpy': This function or variable may be unsafe
Всем привет! :drink: char *p; char q; cin &gt;&gt; q; p = new...

Warning C4996: 'strcpy': This function or variable may be unsafe
написал программу все считает , но выводит ошибку окно как сделать отладку...

6
Stitch Igorek
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 308
Завершенные тесты: 1
04.04.2016, 21:28 2
C++
1
2
delete[]name;
    name = getname();
этот участок тебя не смущает? сначала удалил name, а потом что то туда присвоить захотел
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
04.04.2016, 21:37 3
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Компилятор выдаёт ошибку error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead...
Выкинуть Студию, поставить QtCreator. Или читать ошибку дальше, найти там написанный капсом ключик и вбить его в Гугл. В Гугле будет описано как именно скакать вокруг Студии с бубном, чтобы она кушала стандартые сишные функции.
Цитата Сообщение от Stitch Igorek Посмотреть сообщение
этот участок тебя не смущает? сначала удалил name, а потом что то туда присвоить захотел
Сначала удалил объект, на который указывало name, а потом записал в name новый указатель.
0
zss
Модератор
Эксперт С++
7188 / 6682 / 4231
Регистрация: 18.12.2011
Сообщений: 17,635
Завершенные тесты: 1
04.04.2016, 21:37 4
Stitch Igorek, Тут все правильно. В getname память выделяется по новой.

MS предлагает использовать вместо strcpy strcpy_s
Надо согласиться и переделать или отключить это сообщение поставив в начале программы
C++
1
#pragma warning(disable:4996)
0
castaway
Эксперт С++
4930 / 3037 / 453
Регистрация: 10.11.2010
Сообщений: 11,116
Записей в блоге: 10
Завершенные тесты: 1
04.04.2016, 21:42 5
Цитата Сообщение от Stitch Igorek Посмотреть сообщение
этот участок тебя не смущает? сначала удалил name, а потом что то туда присвоить захотел
Это ж указатель. Почему бы и нет?
0
Stitch Igorek
47 / 47 / 31
Регистрация: 02.04.2016
Сообщений: 308
Завершенные тесты: 1
04.04.2016, 21:44 6
Цитата Сообщение от zss Посмотреть сообщение
Stitch Igorek, Тут все правильно. В getname память выделяется по новой.
Ссори - не заметил новое выделение памяти в getname
0
djair
1 / 2 / 4
Регистрация: 22.09.2015
Сообщений: 12
05.04.2016, 01:43 7
C++
1
2
3
4
5
6
7
8
char* getname() {
    char temp[80];
    cout << "Enter last name:";
    cin >> temp;
    char* pn;
    pn = _strdup(temp);
    return pn;
}
очень удобная _strdup();

или как вариант добавь макрос:
C++
1
#define _CRT_SECURE_NO_WARNINGS
0
05.04.2016, 01:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.04.2016, 01:43

Error C4996: 'gets': This function or variable may be unsafe
#include &quot;stdafx.h&quot; #include&quot;iostream&quot; #include &quot;cstdio&quot; using namespace...

Ошибка 1 error C4996: 'scanf': This function or variable may be unsafe
Здравствуйте , подскажите пожалуйста с задачками) есть 2 задачки по массивам...

Исправить ошибку "C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead."
Добрый день! Помогите пожалуйста с программой. Программа запускается, но...


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

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

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