Ошибка функции strcpy

начал изучать строки и появился вопрос: При выполнение команды strcpy в Visual Studio возникает ошибка компиляции ибо это небезопасно использовать данную команду.Почему ее небезопасно использовать?И какая разница между strcpy и strcpy_s ? PS.Прошу прошения если вопрос составлен плохо.


Ответы (1 шт):

Автор решения: Harry

Не то чтобы опасно, просто надо обеспечить некоторые условия. Например

char s[5];
strcpy(s,"Hello, world");

и в результате в массив из пяти символов копируется 13 символов. Возникает проблема.

В VC++ это не ошибка, а предупреждение - что лучше б вам использовать версию, в которую вы должны передать еще и размер массива-приемника:

strcpy_s(s,5,"Hello, world");

и больше, чем указано, символов скопировано не будет.

VC++, кстати, сообщает о том, как заставить его не считать это проблемой - прочтите его сообщение полностью, и добавьте в код первой строкой

#define  _CRT_SECURE_NO_WARNINGS

Ну, или таки используйте strcpy_s...

→ Ссылка