Является ли strcpy эквивалентным strcpy_s

Я хотел бы знать, могу ли я смело заменить strcpy_s, определенный здесь https://msdn.microsoft.com/en-us/library/td1esda9.aspx — (с двумя аргументами) с определенным здесь strcpy http://en.cppreference.com/w/c/string/byte/strcpy — (первый). Если нет, то какая версия ближе всего зЬгсру что я могу использовать для замены strcpy_s?

0

Решение

Добавлен стандарт C11 проверенные функции в том числе strcpy_s(). Так что, если вы беспокоитесь о переносимости, это нормально, если у вас есть C11-совместимый компилятор. Обратите внимание, что «обработчик ограничений» стандарта C11 немного отличается от «обработчика недопустимых параметров» в Microsoft CRT, поэтому при установке пользовательского обработчика могут потребоваться некоторые корректировки.

Что касается замены в целом, нет, вы не можете безопасно заменить его на strcpy() по причинам, которые должны быть очевидны: strcpy() не ограничено. Вы должны будете либо сделать свою собственную проверку границ, используя strlen()или используйте strncpy(), но обратите внимание, что strncpy() ведет себя по-разному (в частности, если исходная строка слишком велика, чтобы поместиться в месте назначения, буфер назначения не будет иметь нулевое окончание).

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]