Расшифруйте свой JSON с помощью json_decode($temp, true);
Rageous - это правильно, за этим нет сложной логики.
Я бы просто использовал версию Microsoft на данный момент, и если вы решите перенести на другую ОС позже, ЗАТЕМ реализовать ее самостоятельно для целевая платформа и используйте команды препроцессора, чтобы указать вашу реализацию на платформе (ах), отличной от Windows.
Если вы действительно хотите программировать на C:
Используйте старый добрый стандарт strncpy
.
] Если вы программируете на C ++:
Используйте простой старый стандартный строковый класс std :: string
.
(подсказка: вы, вероятно, хотите последнее. Строки C - это просто ошибки, ожидающие своего появления , даже если вы используете «безопасные» * _ s
функции. C ++ не зря добавил строковый класс)
Попробуйте strlcpy . Хотя он и не является стандартным C, он существует на нескольких платформах, и вы можете скачать его реализации, поскольку исходный код доступен бесплатно. См. http://www.gratisoft.us/todd/papers/strlcpy.html
Просто используйте strncpy и отключите предупреждение в VC ++.
Насколько я понимаю, strncpy_s не имеет сложной логики: просто берет минимальную длину строки, размеры исходных и целевых данных и копирует полученное количество символов в место назначения. Если он вам так нужен, почему бы не реализовать его самостоятельно?
Возможно, вас заинтересует проект Apache Portable Runtime :
Задача проекта Apache Portable Runtime (APR) - создание и поддержка программных библиотек, которые предоставляют предсказуемый и последовательный интерфейс к базовым реализациям, зависящим от платформы.
autoconf может также позаботиться о некоторых из этих различий, связанных с платформой (путем установки #defines и т. Д.), Хотя мой опыт работы с ним под Windows оставляет желать лучшего.
Вы можете предоставить собственную реализацию для платформ, у которых нет этой функции. Или используйте макрос, чтобы уменьшить количество аргументов на единицу и сопоставить их со стандартной строковой функцией.