Книга: Linux программирование в примерах

3.2.2. Копирование строк: strdup()

3.2.2. Копирование строк: strdup()

Одной чрезвычайно типичной операцией является выделение памяти для копирования строки. Это настолько типично, что многие программисты предусматривают для нее простую функцию вместо использования внутритекстового кодирования, и часто эта функция называется strdup():

#include <string.h>
/* strdup --- выделить память с malloc() и скопировать строку */
char *strdup(const char *str) {
 size_t len;
 char *copy;
 len = strlen(str) + 1;
 /* включить место для завершающего '' */
 copy = malloc(len);
 if (copy != NULL) strcpy(copy, str);
 return copy; /* при ошибке возвращает NULL */
}

С появлением стандарта POSIX 2001 программисты по всему миру могут вздохнуть свободнее: эта функция является теперь частью POSIX в виде расширения XSI:

#include <string.h> /* XSI */
char *strdup(const char *str); /* Копировать str */

Возвращаемое значение равно NULL, если была ошибка, или указатель на динамически выделенную память с копией str. Возвращенное значение должно быть освобождено с помощью free(), когда больше не требуется.

Оглавление книги


Генерация: 3.875. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз