Namespaces
Variants

strndup

From cppreference.net
Definido en el encabezado <string.h>
char * strndup ( const char * str, size_t size ) ;
(TR de memoria dinámica)

Retorna un puntero a una cadena de bytes terminada en nulo, que contiene copias de como máximo size bytes desde la cadena apuntada por str . Si el terminador nulo no se encuentra en los primeros size bytes, se añade a la cadena duplicada.

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

Si ocurre un error, se devuelve un puntero nulo y errno puede establecerse.

Como todas las funciones del TR de Memoria Dinámica, strndup solo se garantiza que esté disponible si __STDC_ALLOC_LIB__ está definido por la implementación y si el usuario define __STDC_WANT_LIB_EXT2__ a la constante entera 1 antes de incluir string.h .

Contenidos

Parámetros

str - puntero a la cadena de bytes terminada en nulo a duplicar
size - número máximo de bytes a copiar desde str

Valor de retorno

Un puntero a la cadena recién asignada, o un puntero nulo si ocurrió un error.

Notas

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

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

Véase también

(dynamic memory TR)
asignar una copia de una cadena
(función)
copia cierta cantidad de caracteres de una cadena a otra
(función)
asigna memoria
(función)