Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Альтернативы
Недавние
Show all languages
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

strlcpy и strlcat — нестандартные функции, созданные в качестве замены часто используемых некорректным образом аналогов стандартной библиотеки языка программирования Си для копирования содержимого нуль-терминированной строки в буфер ограниченного размера с защитой от переполнения буфера.

strlcpy и strlcat — безопасная и производительная замена стандартных функций strncpy и strncat, соответственно.

strlcpy и strlcat появились и поддерживаются в OpenBSD. Позднее их начали использовать и в некоторых других операционных системах. В системах, не поддерживающих strlcpy/strlcat, возможна их кустарная реализация, например, из исходного кода, распространяемого по лицензии BSD.

Описание

Прототипы, описанные в заголовочном файле string.h:

size_t strlcpy (char *dst, const char *src, size_t size);
size_t strlcat (char *dst, const char *src, size_t size);
  • dst — указатель на буфер назначения.
  • src — указатель на исходную строку.
  • size — размер буфера назначения.

Функция strlcpy копирует из строки src в буфер dst не более чем size - 1 символов и гарантированно устанавливает в конец строки нулевой символ. strlcat делает то же самое, однако копирование ведётся не в начало dst, а таким образом, чтобы продолжить строку, на которую указывает dst. В случае, когда dst указывает на нуль-символ, поведение функций эквивалентно.

Возвращаемое значение

strlcpy возвращает размер строки по адресу src. strlcat возвращает суммарную длину строк по адресам src и dst. Возвращаемое значение не зависит от того, удалось скопировать строку полностью или нет; это позволяет легко определить что буфер назначения слишком мал для копируемой строки.

Пример использования

#include <string.h>
#include <stdio.h>                       /* для printf() */

char  buf[10];                      // буфер размером меньше строки

int main(void)
{
   const char *str = "образец строки";
   size_t sz;

   buf[9] = '\0';                   // избыточная инициализация для отладочной печати

   printf("строка: \"%s\"\n\n", str);
   printf("буфер перед копированием: \"%s\"\n", buf);

   sz = strlcpy(buf, str, sizeof(buf));    
   if (sz >= sizeof(buf))      
      printf("обнаружено усечение строки с %zu до %lu символов !\n", sz, sizeof(buf)-1);

   printf("буфер после копирования:  \"%s\"\n", buf);

   return 0;
}

Вывод:

строка: "образец строки"

буфер перед копированием: ""
обнаружено усечение строки с 14 до 9 символов !
буфер после копирования:  "образец с"

(строка при копировании была усечена до размера буфера — 9 символов + нулевой)

Ссылки

Эта страница в последний раз была отредактирована 9 ноября 2020 в 15:00.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).