Subrutinas strcat, strncat, strxfrm, strxfrm_l, strcpy, strncpy, stpcpy, stpncpy, strdup o strndup

Finalidad

Copia y añade series en la memoria.

Biblioteca

Biblioteca C estándar (libc.a)

Sintaxis

#include <string.h>

char * gatito ( String1,  String2) char *Cadena1 const car *Cadena2;

car * strncat (String1, String2, Número) char *Serie1; const char *Serie2; size_t Número;

tamaño_t  Strxfrm (String1, String2, Número) car *Cadena1;  const car *Cadena2; tamaño_t Número;

size_t strxfrm_l (String1, String2, Número,Entorno local) char *String1; const char *String2; size_t Número; locale_t Locale;

car * strcpy (String1, String2) char *Serie1; const char *Serie2;

car * strncpy (String1, String2, Número) char *Serie1; const char *Serie2; size_t Número;

char * stpcpy (String1, String2) char *Serie1; const char *Serie2;

char * stpncpy (String1, String2, tamaño) char *Serie1; const char *String2; size_t tamaño;

car * strdup (String1) const char *Serie1;

char * strndup (String1, size) const char *Serie1; size_t tamaño;

Descripción

strcat, strncat, strxfrm, strcpy, strxfrm_l, Las subrutinas strncpy, stpcpy, stpncpy, strdupy strndup copian y añaden series en la memoria.

Los parámetros String1 y String2 apuntan a series. Una serie es una matriz de caracteres terminados por un carácter nulo. strcat, strncat, strcpy, y las subrutinas strncpy alteran la serie en el parámetro String1 . Sin embargo, no comprueban el desbordamiento de la matriz a la que apunta el parámetro String1 . El movimiento de la serie se realiza carácter por carácter y empieza a la izquierda. El solapamiento se mueve hacia el trabajo izquierdo como se esperaba, pero el solapamiento se mueve hacia la derecha puede dar resultados inesperados. Todas estas subrutinas se declaran en el archivo string.h .

La subrutina strcat añade una copia de la serie a la que apunta el parámetro String2 al final de la serie a la que apunta el parámetro String1 . La subrutina strcat devuelve un puntero al resultado terminado en nulo.

La subrutina gato de cadena copia un número de bytes especificados por el parámetro Número del parámetro String2 al final de la serie a la que apunta el parámetro String1 . La subrutina deja de copiarse antes del final del número de bytes especificado por el parámetro Número si encuentra un carácter nulo en la serie del parámetro String2 . La subrutina strncat devuelve un puntero al resultado terminado en nulo. La subrutina strncat devuelve el valor del parámetro String1 .

La subrutina strxfrm transforma la serie a la que apunta el parámetro String2 y la coloca en la matriz a la que apunta el parámetro String1 . La subrutina strxfrm transforma toda la serie si es posible, pero no coloca más del número de bytes especificado por el parámetro Número en la matriz a la que apunta el parámetro String1 . En consecuencia, si el parámetro Número tiene un valor de 0, el parámetro String1 puede ser un puntero nulo. La subrutina strxfrm devuelve la longitud de la serie transformada, sin incluir el byte nulo de terminación. Si el valor devuelto es igual o mayor que el del parámetro Número , el contenido de la matriz a la que apunta el parámetro String1 es indeterminable. Si el número de bytes especificado por el parámetro Número es 0, la subrutina strxfrm devuelve la longitud necesaria para almacenar la serie transformada, sin incluir el byte nulo de terminación. La subrutina strxfrm viene determinada por la categoría LC_COLLATE .

La función strxfrm_l () es equivalente a la función strxfrm () , excepto que los datos de entorno local utilizados proceden del entorno local representado por Locale.

Las subrutinas strcpy y stpcpy copian la serie a la que apunta el parámetro String2 en la matriz de caracteres a la que apunta String1 . La copia se detiene después de que se copie el carácter nulo. La subrutina strcpy devuelve el valor del parámetro String1 , si es satisfactorio. De lo contrario, se devuelve un puntero nulo.

Las subrutinas stpcpy devuelven un puntero al carácter NULL de terminación copiado en el parámetro String1 , si es satisfactorio. De lo contrario, se devuelve un puntero nulo.

Las subrutinas Strncpy y stpncpy copian el número de bytes especificados por el parámetro Número de la serie a la que apunta el parámetro String2 en la matriz de caracteres a la que apunta el parámetro String1 . Si el valor del parámetro String2 es menor que el número de caracteres especificado, entonces la subrutina strncpy rellena el parámetro String1 con caracteres nulos finales a un número de bytes que equivale al valor del parámetro Número . Si el parámetro String2 es exactamente el número de caracteres especificado o más, sólo se copiará el número de caracteres especificado por el parámetro Número y el resultado no terminará con un byte nulo. La subrutina strncpy devuelve el valor del parámetro String1 .

Si se escribe un carácter nulo en el destino, la función stpncpy devuelve la dirección del primer carácter nulo de este tipo. De lo contrario, devuelve & String1[Número].

La subrutina strdup devuelve un puntero a una nueva serie, que es un duplicado de la serie a la que apunta el parámetro String1 . El espacio para la nueva serie se obtiene utilizando la subrutina malloc . Se devuelve un puntero nulo si no se puede crear la nueva serie.

La subrutina strndup es equivalente a la subrutina strdup , excepto que copia como máximo size más un byte en la memoria recién asignada, terminando la nueva serie con un carácter nulo. Si la longitud de String1 es mayor que tamaño, sólo se duplican tamaño bytes. Si el tamaño es mayor que la longitud de String1, todos los bytes de String1 se copiarán en el nuevo almacenamiento intermedio de memoria, incluyendo el carácter NULL de terminación

Parámetros

Elemento Descripción
Número Especifica el número de bytes de una serie que se va a copiar o transformar.
String1 Apunta a una serie a la que se copian o añaden los datos especificados.
String2 Apunta a una serie que contiene los datos que se van a copiar, añadir o transformar.
Entorno local Especifica el entorno local en el que se debe transformar la serie.

Códigos de error

strcat, strncat, strxfrm, strxfrm_l, strcpy, Las subrutinas strncpy, stpcpy, stpncpy,strdupy strndup fallan si se produce lo siguiente:

Elemento Descripción
EFAULT Un parámetro de serie es una dirección no válida.

Además, la subrutina strxfrmy strxfrm_l falla si:

Elemento Descripción
EINVAL Un parámetro de serie contiene caracteres fuera del dominio de la secuencia de clasificación.

Las funciones strdup y strndup fallan si:

Elemento Descripción
ENOMEM El espacio de almacenamiento disponible no es suficiente.