Альтернативы MS strncpy_s

Расшифруйте свой JSON с помощью json_decode($temp, true);

.
5
задан Niall 4 February 2016 в 06:22
поделиться

8 ответов

Rageous - это правильно, за этим нет сложной логики.

Я бы просто использовал версию Microsoft на данный момент, и если вы решите перенести на другую ОС позже, ЗАТЕМ реализовать ее самостоятельно для целевая платформа и используйте команды препроцессора, чтобы указать вашу реализацию на платформе (ах), отличной от Windows.

1
ответ дан 18 December 2019 в 14:51
поделиться
std::string s(Cstring, n);
3
ответ дан 18 December 2019 в 14:51
поделиться

Если вы действительно хотите программировать на C:

Используйте старый добрый стандарт strncpy .

] Если вы программируете на C ++:

Используйте простой старый стандартный строковый класс std :: string .

(подсказка: вы, вероятно, хотите последнее. Строки C - это просто ошибки, ожидающие своего появления , даже если вы используете «безопасные» * _ s функции. C ++ не зря добавил строковый класс)

3
ответ дан 18 December 2019 в 14:51
поделиться

Попробуйте strlcpy . Хотя он и не является стандартным C, он существует на нескольких платформах, и вы можете скачать его реализации, поскольку исходный код доступен бесплатно. См. http://www.gratisoft.us/todd/papers/strlcpy.html

2
ответ дан 18 December 2019 в 14:51
поделиться

Просто используйте strncpy и отключите предупреждение в VC ++.

1
ответ дан 18 December 2019 в 14:51
поделиться

Насколько я понимаю, strncpy_s не имеет сложной логики: просто берет минимальную длину строки, размеры исходных и целевых данных и копирует полученное количество символов в место назначения. Если он вам так нужен, почему бы не реализовать его самостоятельно?

1
ответ дан 18 December 2019 в 14:51
поделиться

Возможно, вас заинтересует проект Apache Portable Runtime :

Задача проекта Apache Portable Runtime (APR) - создание и поддержка программных библиотек, которые предоставляют предсказуемый и последовательный интерфейс к базовым реализациям, зависящим от платформы.

autoconf может также позаботиться о некоторых из этих различий, связанных с платформой (путем установки #defines и т. Д.), Хотя мой опыт работы с ним под Windows оставляет желать лучшего.

1
ответ дан 18 December 2019 в 14:51
поделиться

Вы можете предоставить собственную реализацию для платформ, у которых нет этой функции. Или используйте макрос, чтобы уменьшить количество аргументов на единицу и сопоставить их со стандартной строковой функцией.

0
ответ дан 18 December 2019 в 14:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: