Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés
Se recomienda usar Visual Studio 2017
Esta documentación está archivada y no tiene mantenimiento.

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

Agregue los caracteres de una cadena. Versiones más seguras de estas funciones están disponibles, vea strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l.

Nota importante Importante

_mbsncat y _mbsncat_l no se pueden utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows. Para obtener más información, vea Funciones CRT no compatibles con /ZW.

char *strncat(
   char *strDest,
   const char *strSource,
   size_t count 
);
wchar_t *wcsncat(
   wchar_t *strDest,
   const wchar_t *strSource,
   size_t count 
);
unsigned char *_mbsncat(
   unsigned char *strDest,
   const unsigned char *strSource,
   size_t count
);
unsigned char *_mbsncat_l(
   unsigned char *strDest,
   const unsigned char *strSource,
   size_t count,
   _locale_t locale
);
template <size_t size>
char *strncat(
   char (&strDest)[size],
   const char *strSource,
   size_t count 
); // C++ only
template <size_t size>
wchar_t *wcsncat(
   wchar_t (&strDest)[size],
   const wchar_t *strSource,
   size_t count 
); // C++ only
template <size_t size>
unsigned char *_mbsncat(
   unsigned char (&strDest)[size],
   const unsigned char *strSource,
   size_t count
); // C++ only
template <size_t size>
unsigned char *_mbsncat_l(
   unsigned char (&strDest)[size],
   const unsigned char *strSource,
   size_t count,
   _locale_t locale
); // C++ only

strDest

Cadena terminada en null de destino.

strSource

Cadena terminada en null de origen.

count

Número de caracteres que se va a anexar.

locale

Configuración regional a utilizar.

Devuelve un puntero a la cadena de destino. No se reserva ningún valor devuelto para indicar un error.

La función de strncat anexa, como máximo, los primeros caracteres de count de strSource a strDest. El carácter inicial de strSource sobrescribe el carácter null de terminación de strDest. Si un carácter null aparece en strSource antes de que se anexen los caracteres de count, strncat anexa todos los caracteres de strSource, hasta el carácter null. Si count es mayor que la longitud de strSource, la longitud de strSource se utiliza en lugar de count. Todos los casos, se terminan con un carácter nulo. Si la copia tiene lugar entre cadenas superpuestas, el comportamiento es indefinido.

Nota de seguridad Nota sobre la seguridad

strncat no comprueba el espacio suficiente en strDest; por tanto una causa potencial de saturaciones del búfer. Tenga presente que count limita el número de caracteres especificado; no es un límite en el tamaño de strDest. Vea el ejemplo siguiente. Para obtener más información, vea Para evitar las saturaciones del búfer.

wcsncat y _mbsncat son versiones de caracteres anchos y de multibyte- carácter de strncat. Los argumentos de cadena y el valor devuelto de wcsncat son cadenas de caracteres; las de _mbsncat son cadenas de multibyte- carácter. Estas tres funciones se comportan exactamente igual de otra manera.

El valor de salida se ve afectado por el valor de la categoría de LC_CTYPE de configuración regional; vea setlocale para obtener más información. Las versiones de estas funciones sin el sufijo de _l utilizan la configuración regional actual para este comportamiento configuración regional-dependiente; las versiones con el sufijo de _l son idénticas salvo que utilizan el parámetro locale pasado en su lugar. Para obtener más información, vea Configuración regional.

En C++, estas funciones tienen sobrecargas de la plantilla. Para obtener más información, vea Sobrecargas de plantilla de seguridad.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_tcsncat

strncat

_mbsnbcat

wcsncat

_tcsncat_l

_strncat_l

_mbsnbcat_l

_wcsncat_l

Nota Nota

_strncat_l y _wcsncat_l no dependen de la configuración regional y no están diseñados llamar directamente. Se proporcionan para uso interno por _tcsncat_l.

Rutina

Encabezado necesario

strncat

<string.h>

wcsncat

<string.h> o <wchar.h>

_mbsncat

<mbstring.h>

_mbsncat_l

<mbstring.h>

Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

// crt_strncat.c
// Use strcat and strncat to append to a string.
#include <stdlib.h>

#define MAXSTRINGLEN 39

char string[MAXSTRINGLEN+1];
// or char *string = malloc(MAXSTRINGLEN+1);

void BadAppend( char suffix[], int n )
{
   strncat( string, suffix, n );
}

void GoodAppend( char suffix[], size_t n )
{
   strncat( string, suffix, __min( n, MAXSTRINGLEN-strlen(string)) );
}

int main( void )
{
   string[0] = '\0';
   printf( "string can hold up to %d characters\n", MAXSTRINGLEN );

   strcpy( string, "This is the initial string!" );
   // concatenate up to 20 characters...
   BadAppend( "Extra text to add to the string...", 20 );
   printf( "After BadAppend :  %s (%d chars)\n", string, strlen(string) );

   strcpy( string, "This is the initial string!" );
   // concatenate up to 20 characters...
   GoodAppend( "Extra text to add to the string...", 20 );
   printf( "After GoodAppend:  %s (%d chars)\n", string, strlen(string) );
}

string can hold up to 39 characters
After BadAppend :  This is the initial string!Extra text to add to (47 chars)
After GoodAppend:  This is the initial string!Extra text t (39 chars)

Observe que BadAppend produjo una saturación del búfer.

Mostrar: