Namespaces
Variants

wcsncat, wcsncat_s

From cppreference.net
< c ‎ | string ‎ | wide
Défini dans l'en-tête <wchar.h>
(1)
wchar_t * wcsncat ( wchar_t * dest, const wchar_t * src, size_t count ) ;
(depuis C95)
(jusqu'à C99)
wchar_t * wcsncat ( wchar_t * restrict dest,
const wchar_t * restrict src, size_t count ) ;
(depuis C99)
errno_t wcsncat_s ( wchar_t * restrict dest, rsize_t destsz,
const wchar_t * restrict src, rsize_t count ) ;
(2) (depuis C11)
1) Ajoute au maximum count caractères larges de la chaîne large pointée par src , en s'arrêtant si le terminateur nul est copié, à la fin de la chaîne de caractères pointée par dest . Le caractère large src [ 0 ] remplace le terminateur nul à la fin de dest . Le terminateur nul est toujours ajouté à la fin (donc le nombre maximum de caractères larges que la fonction peut écrire est count + 1 ).
Le comportement est indéfini si le tableau de destination n'est pas suffisamment grand pour contenir à la fois str et dest ainsi que le caractère large nul de fin.
Le comportement est indéfini si les chaînes se chevauchent.
2) Identique à (1) , sauf que cette fonction peut altérer le reste du tableau de destination (à partir du dernier caractère large écrit dans destsz ) et que les erreurs suivantes sont détectées à l'exécution et appellent la fonction gestionnaire de contraintes actuellement installée :
  • src ou dest est un pointeur nul
  • destsz ou count est zéro ou supérieur à RSIZE_MAX / sizeof ( wchar_t )
  • il n'y a pas de caractère large nul dans les premiers destsz caractères larges de dest
  • une troncation se produirait : count ou la longueur de src , selon la plus petite, dépasse l'espace disponible entre le terminateur nul de dest et destsz .
  • un chevauchement se produirait entre les chaînes source et destination
Comme pour toutes les fonctions à vérification de limites, wcsncat_s n'est garantie d'être disponible que si __STDC_LIB_EXT1__ est défini par l'implémentation et si l'utilisateur définit __STDC_WANT_LIB_EXT1__ à la constante entière 1 avant d'inclure <wchar.h> .

Table des matières

Paramètres

dest - pointeur vers la chaîne large terminée par un caractère nul à laquelle ajouter
src - pointeur vers la chaîne large terminée par un caractère nul à copier
count - nombre maximum de caractères larges à copier
destsz - taille du tampon de destination

Valeur de retour

1) renvoie une copie de dest
2) renvoie zéro en cas de succès, renvoie une valeur non nulle en cas d'erreur. De plus, en cas d'erreur, écrit L ' \0 ' dans dest [ 0 ] (sauf si dest est un pointeur nul ou destsz est zéro ou supérieur à RSIZE_MAX / sizeof ( wchar_t ) ).

Notes

Bien que la troncation pour s'adapter au tampon de destination soit un risque de sécurité et donc une violation des contraintes d'exécution pour wcsncat_s , il est possible d'obtenir le comportement de troncation en spécifiant count égal à la taille du tableau de destination moins un : cela copiera les premiers count caractères larges et ajoutera le terminateur nul comme toujours : wcsncat_s ( dst, sizeof dst / sizeof * dst, src, ( sizeof dst / sizeof * dst ) - wcsnlen_s ( dst, sizeof dst / sizeof * dst ) - 1 ) ;

Exemple

#include <wchar.h> 
#include <stdio.h>
#include <locale.h>
int main(void) 
{
    wchar_t str[50] = L"Земля, прощай.";
    wcsncat(str, L" ", 1);
    wcsncat(str, L"В добрый путь.", 8); // only append the first 8 wide chars
    setlocale(LC_ALL, "en_US.utf8");
    printf("%ls", str);
}

Sortie possible :

Земля, прощай. В добрый

Références

  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.29.4.3.2 La fonction wcsncat (p : 315)
  • K.3.9.2.2.2 La fonction wcsncat_s (p : 466-467)
  • Norme C11 (ISO/CEI 9899:2011):
  • 7.29.4.3.2 La fonction wcsncat (p: 432-433)
  • K.3.9.2.2.2 La fonction wcsncat_s (p: 643-644)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.24.4.3.2 La fonction wcsncat (p : 378-379)

Voir aussi

(C95) (C11)
ajoute une copie d'une chaîne large à une autre
(fonction)
concatène un certain nombre de caractères de deux chaînes
(fonction)
(C95) (C11)
copie une chaîne large vers une autre
(fonction)
Documentation C++ pour wcsncat