С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/40: Рейтинг темы: голосов - 40, средняя оценка - 4.98
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 216
1

Ошибка использования strcpy

03.12.2015, 00:05. Показов 7481. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. В строке 24 появляется ошибка: error C4996: 'strcpy': This function or variable may be unsafe.

Предлагает использовать взамен strcpy_s - пробую, но тогда пишет, что эта функция не принимает два аргумента.
Подскажите, как быть в данном случае?


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//P6-05.CPP - макросредства для перменного списка параметров
 
#include<iostream> 
using namespace std;
#include<locale>
#include<sstream>  // Для работы со строками
#include<stdarg.h>  // Для макросредств
#include<cstdlib>  // Для функции malloc()
 
char *concat(char *s1, ...)
 
{
    va_list par;  // Указатель на параметры списка
    char *cp = s1;
    int len = strlen(s1); // Длина 1-го параметра
    va_start(par, s1); // Начало переменного списка
    // Цикл для определения общей длины параметров-строк:
    while (cp = va_arg(par, char *))
 
        len += strlen(cp); // Выделение памяти для результата:
    char *stroka = (char *)malloc(len + 1);
    strcpy(stroka, s1);
    va_start(par, s1);   // Начало переменного списка
    // Цикл конкатенации параметров строк:
    while (cp = va_arg(par, char *))
        strcat(stroka, cp); // Конкатенация двух строк
    va_end(par);
    return stroka;
    
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    char* concat(char* s1, ...); // Прототип функции
    char* s;                     // Указатель для результата
    s = concat("\nNulla ", "Dies ", "Sine ", "Linea!", NULL);
    s = concat(s, " - Ни одного дня без черточки!", "\n\t",
        "(Плиний Старший о художнике Апеллесе)", NULL);
    cout << s;
 
    cin.get();
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2015, 00:05
Ответы с готовыми решениями:

Strcpy(), классы, линейные списки и функции. Стала появляться ошибка после использования классов
Вот код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;string.h&gt;...

Ошибка на шаге strcpy в MVS2015
Выдаёт ошибку на шаге strcpy? Что не так и как исправить? #include &quot;stdafx.h&quot; #include...

Ошибка при использовании strcpy
Здравствуйте, возникла такая проблема Объявляю массив char * char *names = {&quot;asdfg&quot;,...

Ошибка: 'strcpy': This function or variable may be unsafe
error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To...

12
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
03.12.2015, 00:40 2
tst, вместо strcpy используйте strcpy_s
C++
1
strcpy_s(stroka, len, s1);
1
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 216
03.12.2015, 00:49  [ТС] 3
Помогло

Подскажите, а чтобы перейти от strcat к strcat_s какой параметр нужно будет дописать? Так как теперь тоже ошибку выдает
0
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
03.12.2015, 01:04 4
tst, Использование strcpy_s
1
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 216
03.12.2015, 01:25  [ТС] 5
Получается, что там должна быть длина, т.е. len?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 09:57 6
Отключи SDL в свойствах проекта и пользуйся обычной функцией.
1
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.12.2015, 10:05 7
tst, а еще смой первой строкой файла можно сделать эту
C++
1
#define _CRT_SECURE_NO_WARNINGS
1
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 10:11 8
Kerry_Jr, нет, нужно в свойствах проекта. Это строка сама по себе не поможет.
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.12.2015, 14:09 9
nmcf, всем помогает, а ему не поможет?
0
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 216
03.12.2015, 15:01  [ТС] 10
Мне тоже помогло. Еще попробовала вот эту - сработало:

#pragma warning(disable : 4996)
А если все-таки с strcat_s - есть какая-то сложность с определением этого параметра?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 16:12 11
Эта строка убирает предупреждения, насколько я помню. Хотя они не мешают компилировать. А вот когда не компилируется, надо в свойства проекта.

Добавлено через 2 минуты
Цитата Сообщение от tst Посмотреть сообщение
strcat_s
Там три параметра, а не 2 как у нормальной strcat().
1
1 / 1 / 0
Регистрация: 23.08.2015
Сообщений: 216
03.12.2015, 16:20  [ТС] 12
Да, это понятно. Хотелось бы понять, где взять этот третий параметр в данном случае
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
03.12.2015, 16:28 13
Второй параметр - размер строки-приёмника. Если ты её объявлял, значит, знаешь размер.
1
03.12.2015, 16:28
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2015, 16:28
Помогаю со студенческими работами здесь

Как работает strcpy(), где ошибка
Всем привет) Писал задачу, которая из 10 строк выводит самое короткое и первое в алфавитном...

Своя реализация strcpy - не пойму где ошибка!
void copy(char *p, char *q) throw (char*) { int l2 = strlen(q);...

Ошибка 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; ...

Ошибка использования scanf
Проблемы с директивой scanf(..). Компилятор выдает: d:\program files\microsoft visual studio...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как программировать под HCL Notes и создавать свои продукты на ее основе
InfoMaster 11.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой мощную платформу для разработки корпоративных приложений, которая сочетает в себе функции электронной почты, календаря,. . .
Как работать с SVN (Subversion)
InfoMaster 11.01.2025
Введение Система контроля версий является неотъемлемой частью современного процесса разработки программного обеспечения. Она обеспечивает управление изменениями в коде, позволяет отслеживать. . .
Использование GraphQL в JavaScript
InfoMaster 11.01.2025
Введение в GraphQL и его преимущества В современной разработке веб-приложений эффективный обмен данными между клиентом и сервером играет ключевую роль. GraphQL представляет собой язык запросов и. . .
Администрирован­­­­ие Git, продвинутые техники работы с Git
InfoMaster 11.01.2025
Основы управления репозиторием Эффективное управление Git-репозиторием требует глубокого понимания механизмов контроля доступа и инструментов администрирования. Рассмотрим ключевые аспекты. . .
Что такое HCL Notes и как с ним работать
InfoMaster 10.01.2025
HCL Notes (ранее известный как IBM Notes и Lotus Notes) представляет собой комплексную платформу для совместной работы и обмена информацией в корпоративной среде. Это многофункциональное решение,. . .
Как работать с Git из Windows и Visual Studio
InfoMaster 10.01.2025
Работа с Git в Windows Работа с Git в операционной системе Windows может быть осуществлена с помощью различных инструментов, каждый из которых обладает своими уникальными возможностями и. . .
Аналог оператора switch case в Python
InfoMaster 10.01.2025
Оператор switch case используется в программировании для выбора одного из нескольких вариантов исполнения кода. Однако в языке Python этот оператор отсутствует. Понимание аналогов switch case в. . .
Отличия абстрактного класса от интерфейса
InfoMaster 10.01.2025
В современной разработке программного обеспечения существуют два основных механизма реализации абстракции: абстрактные классы и интерфейсы. Эти инструменты, хотя и схожи в своей основной цели -. . .
Как работать в Git
InfoMaster 10.01.2025
Git — это одна из наиболее популярных систем контроля версий, которая активно используется разработчиками по всему миру. Она позволяет эффективно управлять изменениями в коде, координировать работу. . .
Реализация передвижения персонажа в Unity3d на C#
InfoMaster 10.01.2025
Реализация передвижения персонажа в Unity3D начинается с правильной настройки проекта. Этот этап критически важен для создания отзывчивого и плавного управления. Рассмотрим основные шаги для создания. . .
Docker: руководство для начинающих
InfoMaster 10.01.2025
В современном мире разработки программного обеспечения контейнеризация стала неотъемлемой частью процесса создания и развертывания приложений. Docker, как ведущая платформа контейнеризации, произвела. . .
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru