Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/75: Рейтинг темы: голосов - 75, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 41

Ошибка C4996 'strcpy': This function or variable may be unsafe

04.10.2020, 18:52. Показов 14853. Ответов 20

Студворк — интернет-сервис помощи студентам
ругается на strcpy помогите пожалуйста суть программы(. Следующая программа EMPCLASS.CPP создает два объекта класса employee. Используя оператор точку, программа присваивает значения элементам данных. Затем программа использует метод show_employee для вывода информации о служащем
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
26
27
28
#include <iostream>
#include <string.h>
using namespace std;
class employee
{
public:
    char name[64];
    long employee_id;
    float salary;
    void show_employee(void)
    {
        cout << "Имя: " << name << endl;
        cout << "Номер служащего: " << employee_id << endl;
        cout << "Оклад: " << salary << endl;
    };
};
void main(void)
{
    employee worker, boss;
    strcpy(worker.name, "John Doe");
    worker.employee_id = 12345;
    worker.salary = 25000;
    strcpy(boss.name, "Happy Jamsa");
    boss.employee_id = 101;
    boss.salary = 101101.00;
    worker.show_employee();
    boss.show_employee();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.10.2020, 18:52
Ответы с готовыми решениями:

Ошибка 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; #include&lt;iomanip&gt; using namespace std; struct...

Warning C4996: 'strcpy': This function or variable may be unsafe
Как избавиться от ошибки (warning C4996: 'strcpy': This function or variable may be unsafe), не меняя strcpy(программа большая, и strcpy я...

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

20
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
04.10.2020, 19:04
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
ругается на strcpy помогите пожалуйста
C++
1
2
3
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
0
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 41
04.10.2020, 19:31  [ТС]
Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project11
не помогло, подскажите пожалуйста другое решение
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
04.10.2020, 19:32
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
не помогло, подскажите пожалуйста другое решение
Покажи, как сделал
0
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 41
05.10.2020, 07:19  [ТС]
#include <iostream>
#include <string.h>
using namespace std;
class employee
{
public:
char name[64];
long employee_id;
float salary;
void show_employee(void)
{
cout << "Имя: " << name << endl;
cout << "Номер служащего: " << employee_id << endl;
cout << "Оклад: " << salary << endl;
};
};
void main(void)
{
employee worker, boss;
strcpy(worker.name, "John Doe");
worker.employee_id = 12345;
worker.salary = 25000;
strcpy(boss.name, "Happy Jamsa");
boss.employee_id = 101;
boss.salary = 101101.00;
worker.show_employee();
boss.show_employee();
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
05.10.2020, 07:25
This function or variable may be unsafe
Распространенные ошибки

Цитата Сообщение от ZeuSTReX Посмотреть сообщение
не помогло, подскажите пожалуйста другое решение
... и не нужно обманывать.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.10.2020, 07:27
ZeuSTReX, а где #define _CRT_SECURE_NO_WARNINGS 1, как я показывал выше?
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
05.10.2020, 08:31
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
C
1
strcpy(worker.name, "John Doe");
Ошибка C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Project11
То есть у этого поделия просто аллергия на стандартные функции, оно даже не пытается анализировать контекст. Уж константную строку могло бы и честно проверить, влезает-не влезает.
use _CRT_SECURE_NO_WARNINGS
Хорошо хоть само подсказывает правильный путь для обхода своих багов
0
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 41
05.10.2020, 08:46  [ТС]
#define _CRT_SECURE_NO_WARNINGS 1 вводил и удалял все равно не помогает та же проблема остается
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.10.2020, 08:55
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
#define _CRT_SECURE_NO_WARNINGS 1 вводил и удалял все равно не помогает та же проблема остается
Вот и покажи, куда ты его "вводил". Покажи код с этим define

Добавлено через 28 секунд
C++
1
2
3
4
5
6
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
using namespace std;
class employee
{
0
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 41
05.10.2020, 13:50  [ТС]
с define еще больше ошибок
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
using namespace std;
class employee
{
{
public:
char name[64];
long employee_id;
float salary;
void show_employee(void)
{
cout << "Имя: " << name << endl;
cout << "Номер служащего: " << employee_id << endl;
cout << "Оклад: " << salary << endl;
};
};
int main()
{
employee worker, boss;
strcpy(worker.name, "John Doe");
worker.employee_id = 12345;
worker.salary = 25000;
strcpy(boss.name, "Happy Jamsa");
boss.employee_id = 101;
boss.salary = 101101.00;
worker.show_employee();
boss.show_employee();
}
Миниатюры
Ошибка C4996 'strcpy': This function or variable may be unsafe  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.10.2020, 13:55
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
с define еще больше ошибок
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
class employee
{
{
Что это за двойные скобки?
0
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 41
05.10.2020, 14:07  [ТС]
да я убрал эти скобки, она и без этих скобок дает кучу ошибок
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,921
05.10.2020, 14:42
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
да я убрал эти скобки, она и без этих скобок дает кучу ошибок
Значит, вы что-то накосячили в своем проекте, потому что код рабочий:
Code
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
26
27
28
29
30
31
32
33
34
35
36
37
38
> cat main.cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string.h>
 
using namespace std;
class employee{
public:
  char name[64];
  long employee_id;
  float salary;
  void show_employee(void)
  {
    cout << "Имя: " << name << endl;
    cout << "Номер служащего: " << employee_id << endl;
    cout << "Оклад: " << salary << endl;
  };
};
int main()
{
  employee worker, boss;
  strcpy(worker.name, "John Doe");
  worker.employee_id = 12345;
  worker.salary = 25000;
  strcpy(boss.name, "Happy Jamsa");
  boss.employee_id = 101;
  boss.salary = 101101.00;
  worker.show_employee();
  boss.show_employee();
}
> g++ main.cpp
> ./a.out 
Имя: John Doe
Номер служащего: 12345
Оклад: 25000
Имя: Happy Jamsa
Номер служащего: 101
Оклад: 101101
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.10.2020, 15:05
Цитата Сообщение от ZeuSTReX Посмотреть сообщение
да я убрал эти скобки, она и без этих скобок дает кучу ошибок
Что значит "и без этих скобок"? Я так понимаю, ты вместе со скобками и define убрал? Или вообще все скобки похерил, до которых дотянулся?
Надо просто добавить одну строчку в код, который ты показал в начале и всё заработает.
0
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
05.10.2020, 21:52
oleg-m1973, ZeuSTReX,
C++
1
_CRT_SECURE_NO_WARNINGS
Это ж ключ компилятора фактически. Если правильно понимаю, то так:
Миниатюры
Ошибка C4996 'strcpy': This function or variable may be unsafe  
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
05.10.2020, 21:54
Цитата Сообщение от Vladimir. Посмотреть сообщение
Это ж ключ компилятора фактически. Если правильно понимаю, то так:
Это не ключ компилятора. Это просто макрос.
SDL checks это другое
1
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
06.10.2020, 01:22
oleg-m1973,
sdl - C4996

Добавлено через 6 минут
но я mvsc поставил две-три недели назад "на посмотреть", могу ошибаться. Мне, вроде бы, изменение именно этого ключа позволило нормально собирать код с strncpy.

На текущий момент пытаюсь сообразить, как заставить компилятор адекватно проглотить конструкции вида
C
1
2
const int n;
int array[n];
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
06.10.2020, 02:09
Цитата Сообщение от Vladimir. Посмотреть сообщение
как заставить компилятор адекватно проглотить конструкции вида
это - неадекватная конструкция.
адекватная реакция на неадекватную конструкцию - ошибка компиляции.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12938 / 6805 / 1821
Регистрация: 18.10.2014
Сообщений: 17,224
06.10.2020, 02:33
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
SDL checks это другое
Цитата Сообщение от Vladimir. Посмотреть сообщение
но я mvsc поставил две-три недели назад "на посмотреть", могу ошибаться. Мне, вроде бы, изменение именно этого ключа позволило нормально собирать код с strncpy.
Как уже не раз обязснялось, установка SDL Checks имеет прямое отношение к этой теме: установка SDL Checks определяет, будут ли такие сообщения рапортоваться как errors или как warnings.

Но лучше все таки подавить их совсем через _CRT_SECURE_NO_WARNINGS. Причем не заниматься таким идиотизмом, как вписывание в свой код #define _CRT_SECURE_NO_WARNINGS, а пойти в настройки проекта и там глобально вписать _CRT_SECURE_NO_WARNINGS в список предопределенных макросов препроцессора.

Цитата Сообщение от Vladimir. Посмотреть сообщение
На текущий момент пытаюсь сообразить, как заставить компилятор адекватно проглотить конструкции вида

C++
1
2
const int n;
int array[n];
Но в общем случае const int n; само по себе уже некомпилируемо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2020, 02:33
Помогаю со студенческими работами здесь

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

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

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

Компилятор выдаёт ошибку error C4996: 'strcpy': This function or variable may be unsafe
Добрый день! Помогите , пожалуйста, узнать в чём проблема. Код взят из книги. Мне он не очень нравится, были мысли что где-то есть...

Ошибка C4996: 'gets': This function or variable may be unsafe
#include &lt;iostream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru