swprintf () - Formatta e scrivi caratteri estesi nel buffer

Formato

#include <wchar.h>
int swprintf(wchar_t *wcsbuffer, size_t n,
             const wchar_t *format, argument-list);

Livello lingua

ANSI

Protetto dal sottoprocesso

Sensibile alla locale

Il funzionamento di questa funzione potrebbe essere influenzato dalle categorie LC_CTYPE e LC_NUMERIC della locale corrente. Il comportamento potrebbe anche essere influenzato dalle categorie LC_UNI_CTYPE e LC_UNI_NUMERIC della locale corrente se LOCALETYPE (*LOCALEUCS2) o LOCALETYPE (*LOCALEUTF) è specificato nel comando di compilazione. Questa funzione non è disponibile quando LOCALETYPE (*CLD) viene specificato nel comando di compilazione. Per ulteriori informazioni, consultare Descrizione dei CCSID e delle locale.

Funzione carattere esteso

Per ulteriori informazioni, consultare Caratteri estesi .

Descrizione

La funzione swprintf() formatta e memorizza una serie di caratteri e valori nel buffer di caratteri estesi wcsbuffer. La funzione swprintf() è equivalente alla funzione sprintf() , tranne che opera su caratteri estesi.

Il valore n specifica il numero massimo di caratteri estesi da scrivere, incluso il carattere null finale. La funzione swprintf() converte ogni voce nell'elenco argomenti in base allo specificatore del formato di caratteri estesi corrispondente nel formato. Il formato ha lo stesso formato e la stessa funzione della stringa di formattazione per la funzione printf() , con le seguenti eccezioni:

  • %c (senza prefisso l) converte un argomento carattere in wchar_t, come se richiamasse la funzione mbtowc() .
  • %lc e %C copiano wchar_t in wchar_t. %#lc e%#C sono equivalenti rispettivamente a %lc e %C.
  • %s (senza un prefisso l) converte un array di caratteri multibyte in un array di wchar_t, come se richiamasse la funzione mbstowcs() . L'array viene scritto fino al carattere null finale, ma non incluso, a meno che la precisione non specifichi un output più breve.
  • %ls e %S copiano un array di wchar_t (nessuna conversione). La schiera viene scritta fino al carattere NULL finale, ma non incluso, a meno che la precisione non specifichi un output più breve. %#ls e%#S sono equivalenti rispettivamente a %ls e %S.

La larghezza e la precisione sono sempre caratteri larghi.

Un carattere esteso null viene aggiunto alla fine dei caratteri estesi scritti; il carattere esteso null non viene conteggiato come parte del valore restituito. Se la copia avviene tra oggetti che si sovrappongono, il funzionamento non è definito.

Valore restituito

La funzione swprintf() restituisce il numero di caratteri estesi scritti nel buffer di output, senza contare il carattere esteso null finale o un valore negativo se si verifica un errore. Se è richiesta la scrittura di n o più caratteri estesi, viene restituito un valore negativo.

Il valore di errno può essere impostato su EINVAL, argomento non valido.

Esempio

Questo esempio utilizza la funzione swprintf() per formattare e stampare diversi valori nel buffer.
#include <wchar.h>
#include <stdio.h>
 
#define BUF_SIZE 100
 
int main(void)
{
   wchar_t wcsbuf[BUF_SIZE];
   wchar_t wstring[] = L"ABCDE";
   int     num;
 
   num = swprintf(wcsbuf, BUF_SIZE, L"%s", "xyz");
   num += swprintf(wcsbuf + num, BUF_SIZE - num, L"%ls", wstring);
   num += swprintf(wcsbuf + num, BUF_SIZE - num, L"%i", 100);
   printf("The array wcsbuf contains: \"%ls\"\n", wcsbuf);
   return 0;
 
   /***************************************************************
      The output should be similar to :
 
      The array wcsbuf contains: "xyzABCDE100"
   ***************************************************************/
}

Informazioni correlate