strdup

Из Википедии, бесплатной энциклопедии

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[1024]; char  *arr[300];  int main() {     int i,k;      scanf("%d\n",&k);     if(k>300) k=300;      /* читаем k строк и складываем их */     for(i=0;i<k;i++) {     	fgets(buf, strlen(arr[i]), 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; } 

Ссылки[править | править код]