C ++ vfscanf () - Libreria standard C ++

La funzione vfscanf () in C ++ viene utilizzata per leggere i dati da un flusso di file.

La funzione vfscanf () è definita nel file di intestazione.

prototipo vfscanf ()

 int vfscanf (FILE * stream, const char * format, va_list vlist);

La funzione vfscanf () legge i dati dal flusso del flusso di file e memorizza i valori nelle rispettive posizioni come definito da vlist.

Parametri vfscanf ()

  • stream: flusso di file di input da cui leggere i dati.
  • format: puntatore a una stringa di caratteri con terminazione null che specifica come leggere l'input. Consiste di identificatori di formato che iniziano con%.
  • vlist: elenco di argomenti variabili in cui devono essere memorizzati i valori
    La stringa di formato ha le seguenti parti:
    • Caratteri diversi da spazi tranne% ognuno dei quali consuma un carattere identico dal flusso di input. Può causare il fallimento della funzione se il carattere successivo nello stream non è uguale.
    • Carattere di spazio bianco: tutti i caratteri di spazio bianco consecutivi vengono trattati come un singolo carattere di spazio vuoto. Inoltre, " n", " t" e "" sono considerati uguali.
    • Specifica di conversione: segue il seguente formato:
      • Carattere% iniziale che specifica l'inizio
      • Un carattere facoltativo * chiamato soppressione delle assegnazioni. Se questo carattere è presente, vfscanf () non assegna il risultato a nessun argomento ricevente.
      • Un numero intero positivo facoltativo che specifica la larghezza massima del campo. Specifica il numero massimo di caratteri che vfscanf () può utilizzare quando si esegue la conversione specificata dalla specifica di conversione corrente.
      • Un modificatore di lunghezza opzionale che specifica la dimensione dell'argomento ricevente.
      • Un identificatore di formato di conversione.
    Identificatori di formato
    Identificatore di formato Descrizione
    % Corrisponde alla% letterale
    c Corrisponde a uno o più caratteri. Se la larghezza è definita, corrisponde esattamente ai caratteri di larghezza.
    S Corrisponde a caratteri consecutivi non spazi bianchi. Se la larghezza è definita, corrisponde esattamente ai caratteri di larghezza o fino a quando non viene trovato il primo spazio bianco.
    (impostato) Corrisponde a una sequenza di caratteri non vuota dal set di caratteri specificato. Se è presente all'inizio del set, tutti i caratteri non presenti nel set vengono abbinati.
    d Corrisponde a un numero intero decimale.
    io Corrisponde a un numero intero.
    o Corrisponde a un numero intero ottale senza segno.
    X o x Corrisponde a un numero intero esadecimale senza segno.
    u Corrisponde a un numero intero decimale senza segno.
    A o a, E o e, F o f, G o g Corrisponde a un numero in virgola mobile.
    n Restituisce il numero di caratteri letti fino a quel momento.
    p Corrisponde a una sequenza di caratteri definita dall'implementazione che definisce un puntatore.

    Quindi il formato generale dell'identificatore di formato è:
     Identificatore% (*) (larghezza) (lunghezza)
  • vlist: un elenco di argomenti per ricevere gli input.

vfscanf () Restituisce il valore

  • In caso di successo, la funzione vfscanf () restituisce il numero di argomenti letti con successo.
  • In caso di errore, viene restituito EOF.

Esempio: come funziona la funzione vfscanf ()?

 #include #include void read(FILE* fp, const char * format,… ) ( va_list args; va_start (args, format); vfscanf (fp, format, args); va_end (args); ) int main () ( char myFriends(5)(20) = ("Robert", "Syd", "Brian", "Eddie", "Ray"); FILE *fp = fopen("example.txt","w+"); char name(20); for (int i=0; i<5; i++) fprintf(fp, "%s ", myFriends(i)); rewind(fp); printf("Here are the list of my friends"); for (int i=0; i<5; i++) ( read(fp, "%s ", &name); printf("%s", name); ) fclose(fp); return 0; )

Quando esegui il programma, un possibile output sarà:

 Ecco l'elenco dei miei amici Robert Syd Brian Eddie Ray

Articoli interessanti...