logo

функції strdup() і strndup() у C/C++

The strdup() і strndup() функції використовуються для дублювання рядка.
strdup() :
Синтаксис: char *strdup(const char *s);
Ця функція повертає вказівник на рядок байтів із закінченням нульовим значенням, який є дублікатом рядка, на який вказує с . Отримана пам'ять виконується динамічно за допомогою malloc і, отже, її можна звільнити за допомогою free().
Він повертає вказівник на дубльований рядок с .
Нижче наведено реалізацію C, яка демонструє використання функції strdup() у C:

C








// C program to demonstrate strdup()> #include> #include> int> main()> {> >char> source[] =>'GeeksForGeeks'>;> >// A copy of source is created dynamically> >// and pointer to copy is returned.> >char>* target = strdup(source);> >printf>(>'%s'>, target);> >return> 0;> }>



проходження замовлення поштою
>

>

Вихід:

GeeksForGeeks>

strndup() :
синтаксис: char *strndup(const char *s, size_t n);
Ця функція схожа на strdup(), але копіює максимум п байтів.
Примітка : якщо s довший за n, тоді копіюється лише n байт, а в кінці додається NULL (‘ ’).
Нижче наведено реалізацію C, яка демонструє використання функції strndup() у C:

C

java має наступний




// C program to demonstrate strndup()> #include> #include> int> main()> {> >char> source[] =>'GeeksForGeeks'>;> >// 5 bytes of source are copied to a new memory> >// allocated dynamically and pointer to copied> >// memory is returned.> >char>* target = strndup(source, 5);> >printf>(>'%s'>, target);> >return> 0;> }>

>

як вибрати стовпці з різних таблиць у sql
>

Вихід:

Geeks>

Розглянемо відмінності у вигляді таблиці -:

strdup() strndup()
1. Він використовується для повернення вказівника на байтовий рядок із завершеним нульовим значенням, Він використовується для повернення вказівника на байтовий рядок із закінченням нульовим значенням
2. Його синтаксис -:
char * strdup( const char *str1);

Його синтаксис -:

char *strndup( const char *str, size_t size );

3. Це визначено в файл заголовка Це визначено в файл заголовка
4. Для дублювання потрібен лише один параметр, який є вказівником на рядок байтів із нульовим завершенням

Він приймає два параметри, а саме:
1. вказівник на рядок байтів із нульовим завершенням для дублювання

2. максимальна кількість байтів для копіювання з str

5. Його значенням, що повертається, є покажчик на щойно виділений рядок. Він повертає нульовий покажчик, якщо сталася помилка.

Посилання: Linux man(7)