1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
1

Не работает strcpu_s

08.05.2021, 14:22. Показов 893. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Есть код из учебника. Учебник старый, задолго до VS-2017 написанный. У меня VS-2019.
Если код полностью делать по учебнику (поставив const там, где его нет а он нужен), то вроде как поверхностно всё нормально, но компилятор требует заменить strcpu на strcpu_s. После соответствующей замены говорит, что не подходящих аргументов соответствующих списку.
Прошу знающих подсказать в чем дело.
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// newintro.cpp
// познакомимся с оператором new
#include <iostream>
#include <cstring>
using namespace std;
 
int main ( )
{
  char* str = "Почему это не работает?.";
  int len = strlen ( str );        // вычислим длину нашей строки
 
  char* ptr;                       // определим переменную
  ptr = new char [ len +1 ];       // выделим память
 
  strcpy ( ptr, str );             // скопируем строку str в ptr
 
  cout << "ptr = " << ptr << endl; // покажем что содержится в ptr
 
  delete [] ptr;                   // освободим выделенную память
 
  return 0;
}
Миниатюры
Не работает strcpu_s   Не работает strcpu_s  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2021, 14:22
Ответы с готовыми решениями:

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией...

Не работает SATA винт при загрузке ПК, а DVD без винта работает. На другом компе этот же винт работает
Здравствуйте. В системный блоке нем при загрузки Биос пишет: Advanced primary master HDD марка...

Не работает клавиатура на ноутбуке, внешняя клавиатура частично не работает, экранная не работает
Добрый день! Не работает клавиатура на ноутбуке, внешняя клавиатура частично не работает, экранная...

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с...

4
129 / 81 / 49
Регистрация: 10.01.2020
Сообщений: 293
08.05.2021, 14:26 2
KAMLS, Вот: Использование strcpy_s
1
Мозгоправ
1737 / 1031 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
08.05.2021, 14:27 3
KAMLS, на первом скриншоте внизу есть описание ошибки. Потрудитесь перевести.
Поставьте курсор на strcpy_s, нажмите клавишу F1 и почитайте какие параметры принимает функция. (То же, но кратко, есть во всплывающей подсказке.)
1
1 / 1 / 0
Регистрация: 08.04.2021
Сообщений: 88
08.05.2021, 14:40  [ТС] 4
Цитата Сообщение от stdin Посмотреть сообщение
Вот: Использование strcpy_s
Я понял, что надо отключить применение фишки VS по навязыванию strcpu_s. Подскажите пожалуйста, как и где это делается?
0
Эксперт CЭксперт С++
3458 / 2038 / 1113
Регистрация: 14.12.2018
Сообщений: 4,001
Записей в блоге: 1
08.05.2021, 14:41 5
Лучший ответ Сообщение было отмечено KAMLS как решение

Решение

KAMLS, можно использовать #define _CRT_SECURE_NO_WARNINGS сверху ! Пример с вашим кодом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// newintro.cpp
// познакомимся с оператором new
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    const char* str = "Work !!!!!!";
    int len = strlen(str);        // вычислим длину нашей строки
 
    char* ptr;                       // определим переменную
    ptr = new char[len + 1];       // выделим память
 
    strcpy(ptr, str);             // скопируем строку str в ptr
 
    cout << "ptr = " << ptr << endl; // покажем что содержится в ptr
 
    delete[] ptr;                   // освободим выделенную память
 
    return 0;
}
Или лучше используете strcpy_s() вместо strcpy(). Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// newintro.cpp
// познакомимся с оператором new
#include <iostream>
#include <cstring>
using namespace std;
 
int main()
{
    const char* str = "Work !!!!!!";
    int len = strlen(str);        // вычислим длину нашей строки
 
    char* ptr;                       // определим переменную
    ptr = new char[len + 1];       // выделим память
 
    strcpy_s(ptr, len + 1, str);             // скопируем строку str в ptr
 
    cout << "ptr = " << ptr << endl; // покажем что содержится в ptr
 
    delete[] ptr;                   // освободим выделенную память
 
    return 0;
}
Успехов !
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2021, 14:41
Помогаю со студенческими работами здесь

SelText в textBox'e отчёта не работает или работает не так как в форме?
Пробовал всяко-разно выудить выделенный текст - не выходит. Пишет: &quot;Введенное выражение содержит...

Swf не работает, а в тестовом режиме в самом flash и формате exe работает
Доброго времени суток. Такая проблема: есть рабочий код обмена данными с php скриптам. В тестовом...

Из-за чего интернет работает на техникумовских компьютерах и не работает подключении к моему ноутбуку
В Техникуме есть разные компьютеры - для учителей - для студентов - библиотечные ...

В Windows Forms некоректно работает метод, хотя в консоли работает правильно
//Данный метод должен заменять все элементы в массиве на 1, после найменьшего. public string...

Подключение библиотеки DLL C++: работает на примере консоли и не работает в WinForms App
Здравствуйте! Помогите начинающему бедному студенту!! Осваиваю С++. В книге...

Код работает в песочнице, но не работает при импорте в файлы, что делать?
Код работает в песочнице, но не работает при импорте в файлы. Вроде библиотеки подключил, скрипт...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru