История изменений
Исправление
arturpub,
(текущая версия)
:
Если не считать опа идиотом, который копирует strlen(s) > 8 в это поле, то судя по его же примеру ему нужно записать туда строку, которая априори-уверенно до восьми символов и занулить остальное. Большего он не просит, а strncpy собственно это и делает. Если бы оп был озабочен nul-терминацией в фикседе, он бы явно сказал об этом. Если у него строки от нуля до семи включительно, то strncpy под задачу подходит полностью, включая \0. Если до восьми, то очевидно, что он подразумевает нетерминированность, и strncpy под задачу подходит полностью. В противном случае он стреляет себе в ногу, но это его проблемы, и не надо его оберегать — без опыта не придет понимания.
Тебе нужно просто научиться доверять людям, а также безопасно выводить такие поля, например через printf(«%.*s», (int)sizeof(s), s), чтобы вопросы типа «а что будеш делать смотри как %s вылетает» снимались сами собой. Понять, что в char * и char [8] обычно вкладывается разная семантика, и не мешать все в кучу.
неадекватен
В такие треды всегда набигают яумамы-умники со своими хрестоматийными поучениями, так почему бы их не выгнать? Лор грязнет в них, а модераторы некомпетентны, и временами кто-то должен проводить санацию. Иначе тут начнется второй опеннет или что похуже. Ничего личного, мужик.
Исходная версия
arturpub,
:
Если не считать опа идиотом, который копирует strlen(s) > 8 в это поле, то судя по его же примеру ему нужно записать туда строку, которая априори-уверенно до восьми символов и занулить остальное. Большего он не просит, а strncpy собственно это и делает. Если бы оп был озабочен nul-терминацией в фикседе, он бы явно сказал об этом. Если у него строки от нуля до семи включительно, то strncpy под задачу подходит полностью, включая \0. Если до восьми, то очевидно, что он подразумевает нетерминированность, и strncpy под задачу подходит полностью. В противном случае он стреляет себе в ногу, но это его проблемы, и не надо его оберегать — без опыта не придет понимания.
Тебе нужно просто научиться доверять людям, а также безопасно выводить такие поля, например через printf(«%.*s», sizeof(s), s), чтобы вопросы типа «а что будеш делать смотри как %s вылетает» снимались сами собой. Понять, что в char * и char [8] обычно вкладывается разная семантика, и не мешать все в кучу.
неадекватен
В такие треды всегда набигают яумамы-умники со своими хрестоматийными поучениями, так почему бы их не выгнать? Лор грязнет в них, а модераторы некомпетентны, и временами кто-то должен проводить санацию. Иначе тут начнется второй опеннет или что похуже. Ничего личного, мужик.