strdup — нестандартная функция языка программирования Си, создающая копию указанной нуль-терминированной строки в куче (используя malloc) и возвращающая указатель на неё. Чтобы освободить место, используемое созданной копией, необходимо вызвать free. Функция появилась в BSD, включена в POSIX, но не является частью стандартов ANSI/ISO, хотя поддерживается почти всеми компиляторами.

Функция

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

char* strdup (const char *src);

src — указатель на исходную строку.

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

Указатель на копию строки. Если выделение памяти закончилось неудачей, то создания копии не происходит и функция возвращает NULL.

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

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

char buf; char *arr;

int main() { int i,k;

scanf("%d\n",&k); if(k>300) k=300;

/* читаем k строк и складываем их */ for(i=0;i<k;i++) { fgets(buf, strlen(buf), stdin); arr[i]=strdup(buf);

/* выводим на печать */ for(i=0;i<k;i++) printf("line %3d -> %s\n",i+1,arr[i]); /* чистим память */ for(i=0;i<k;i++) free(arr[i]);

return 0; }

Ссылки strdup(1)

Категория:String.h Категория:Статьи с примерами кода Си