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++) {
gets(buf);
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;
}
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .