The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз набора компиляторов GCC 11"
Отправлено С, 30-Апр-21 14:46 
> почерпнутое из безусловно полезной книжки Вирта

Не читал, осуждаю.

> где про strncpy() сказано

На заборе тоже... сказано.

> Функция ничего не знает про "буфер", а гарантирует, что в массиве будет размещено n символов.

Наконец-то! Именно об этом мы и говорим. На входе валидная строка, на выходе не строка. Тут-то мы и возвращаемся к тому, что нормальных функций работы со строками в стандартной библиотеке нет, и более-менее можно вменяемо использовать лишь snprintf и Annex K, но snprintf надо уметь готовить, а Annex K, решая одни проблемы, создает новые.

> надо понять и указать количество ненулевых символов источника + 1

Если мне заранее известна длина строки, я сделаю memcpy(). Мы говорим о случае, когда я не знаю, влезет ли строка в буфер и хочу получить две вещи: 1) обрезанную или нет, но валидную (то есть, нуль-терминированную) сишную строку в буфере; 2) информацию о том, обрезалась ли строка. Функция strncpy() не справляется ни с тем, ни с другим.

> Ну и хорошо бы ещё понять (мне) кто и зачем таким образом инициализирует массив.

Таким - говнокодеры. В любом серьезном проекте на си первым делом пишется своя, не сломанная реализация strcpy(), и всего остального семейства заодно.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру