Funciones strdup() y strndup() en C/C++

Las funciones strdup() y strndup() se utilizan para duplicar una string. 
strdup() :  
Sintaxis : char *strdup(const char *s);  
Esta función devuelve un puntero a una string de bytes terminada en nulo, que es un duplicado de la string a la que apunta s . La memoria obtenida se realiza dinámicamente usando malloc y por lo tanto se puede liberar usando free()
Devuelve un puntero a la string duplicada s .
A continuación se muestra la implementación de C para mostrar el uso de la función strdup() en C:
 

C

// C program to demonstrate strdup()
#include<stdio.h>
#include<string.h>
 
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;
}

Producción: 

GeeksForGeeks

strndup() :  
sintaxis : char *strndup(const char *s, size_t n);  
Esta función es similar a strdup(), pero copia como máximo n bytes. 
Nota : si s es más largo que n, solo se copian n bytes y se agrega un NULL (‘\0’) al final.
A continuación se muestra la implementación de C para mostrar el uso de la función strndup() en C:
 

C

// C program to demonstrate strndup()
#include<stdio.h>
#include<string.h>
 
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;
}

Producción:

Geeks

Veamos las diferencias en forma tabular -:

  strdup()  strndup() 
1. Se utiliza para devolver un puntero a una string de bytes terminada en nulo, Se utiliza para devolver un puntero a una string de bytes terminada en nulo
2. Su sintaxis es -:
char * strdup( const char *str1 );

Su sintaxis es -:

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

3. Se define en el archivo de encabezado <string.h> Se define en el archivo de encabezado <string.h>
4. Solo se necesita un parámetro que sea un puntero a la string de bytes terminada en nulo para duplicar

Se necesitan dos parámetros que son:
1. puntero a la string de bytes terminada en nulo para duplicar

2. número máximo de bytes para copiar de str

5. Su valor de retorno es un puntero a la string recién asignada. Devuelve un puntero nulo si se produce un error.

Referencia: Linux man(7)
Este artículo es una contribución de MAZHAR IMAM KHAN . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *