Espacios de nombres
Variantes
Acciones

strndup

De cppreference.com
< c‎ | experimental‎ | dynamic
Definido en la cabecera <string.h>
char *strndup(const char *str, size_t tamaño);
(memoria dinamica TR)

Retorna un puntero a una cadena de bytes con terminación nula, que contiene copias de un máximo de tamaño bytes de la cadena a la que apunta str. Si el terminador nulo no se encuentra en los primeros tamaño bytes, se añade a la cadena duplicada.

El puntero retornado debe pasarse a free para evitar una fuga de memoria.

Si se produce un error, se retorna un puntero nulo y se puede establecer errno.

Como todas las funciones de la memoria dinámica TR, strndup sólo se garantiza que está disponible si __STDC_ALLOC_LIB__ se define mediante la implementación y si el usuario define __STDC_WANT_LIB_EXT2__ a la constante entera 1 antes de incluir string.h.

Contenido

[editar] Parametros

str - puntero a la cadena de bytes con terminación nula para duplicar
tamaño - número máximo de bytes desde los que copiar str

[editar] Valor de retorno

Un puntero a la nueva cadena asignada, o un puntero nulo si se ha producido un error.

[editar] Observaciones

La función es idéntica a la de POSIX strndup excepto que está permitida, pero no es necesario configurar errno en caso de error.

[editar] Ejemplo

#ifdef __STDC_ALLOC_LIB__
#define __STDC_WANT_LIB_EXT2__ 1
#else
#define _POSIX_C_SOURCE 200809L
#endif
 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
 
int main(void)
{
    const char *s1 = "String";
    char *s2 = strndup(s1, 2);
    printf("strndup(\"String\", 2) == %s\n", s2);
    free(s2);
}

Salida:

strndup("String", 2) == St

[editar] Véase también

(memoria dinamica TR)
asigna una copia de una cadena de texto
(función) [editar]
copia una cierta cantidad de caracteres de una cadena a otra
(función) [editar]
asigna memoria
(función) [editar]