logo

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

El strdup() y cadena arriba() Las funciones se utilizan para duplicar una cadena.
strdup() :
Sintaxis: char *strdup(const char *s);
Esta función devuelve un puntero a una cadena de bytes terminada en nulo, que es un duplicado de la cadena 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 cadena 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> #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;> }>



>

>

Producción:

GeeksForGeeks>

cadenaup() :
sintaxis: char *strndup(const char *s, size_t n);
Esta función es similar a strdup(), pero copia como máximo norte bytes.
Nota : Si s es más largo que n, entonces solo se copian n bytes y se agrega un NULL (' ') 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> #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;> }>

>

números abc

>

Producción:

Geeks>

Veamos las diferencias en forma de tabla:

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

Su sintaxis es -:

char *strndup( const char *str, size_t tamaño );

3. Se define en archivo de cabecera Se define en archivo de cabecera
4. Solo se necesita un parámetro que sea un puntero a la cadena de bytes terminada en nulo para duplicar

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

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

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

Referencia: Hombre Linux(7)