Visual Studio выдаёт ошибку C4996 при попытке скомпилировать этот проект

116
11 июня 2019, 16:50
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    setlocale(0, "");
    char strHello[256] = "hello"; 
    char strWorld[256] = " world";
    strcat (strHello, strWorld);//я так же обратил внимание и на другие команды(strcpy,strcmp);
    cout << strHello << endl;
    return 0;
}
Answer 1

В Visual C++ рекомендуется использовать функцию strcat_s, и другие функции с _s на конце. Она принимает размер буфера, по этому при ее использовании не может произойти переполнение буфера.

char strHello[256] = "hello"; 
char strWorld[256] = " world";
strcat_s (strHello, sizeof(strHello), strWorld);
// или, для массивов (не указателей) можно не передавать размер:
strcat_s (strHello, strWorld);
Answer 2

Предполагаю, что ошибка всё же имеет номер C4996 (а не C4999). Возникает по причине того, что MS считает функцию strcat небезопасной (в принципе не безосновательно). Однако, приводить к ошибке (не предупреждению) компиляции это по моему мнению не должно. Тем не менее, чтобы упомянутой ошибки не возникало, достаточно добавить следующую строку в начало исходника:

#define _CRT_SECURE_NO_WARNINGS
READ ALSO
Как найти квадрат в двумерном массиве?

Как найти квадрат в двумерном массиве?

Нашел задачу на двумерный массив и не понятно как код писать, сам недавно начал учит с++

187
Реализация ассемблерной вставки [закрыт]

Реализация ассемблерной вставки [закрыт]

Найти сумму положительных элементов массива A = {a [i]}, что удовлетворяют условию: b <= a [i] <= dНаписал код но не могу понять почему оно не работает...

117
Стандартная консоль в CLion

Стандартная консоль в CLion

Как сделать запуск программы из CLion в стандартную консоль OS, а не в встроенную в CLion?

139
Как использовать общую память для двух процессов С линукс

Как использовать общую память для двух процессов С линукс

Нужно сделать общим для нескольких процессов массив структурРешил сделать так: один из процессов выделяет общий блок памяти с помощью shmget,...

152