scanf(3)

NUME
scanf, fscanf, vscanf, vfscanf - conversia formatului FILE (fișierului) de intrare

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <stdio.h>

int scanf(const char *restrict format, ...);
int fscanf(FILE *restrict stream,
           const char *restrict format, ...);

#include <stdarg.h>

int vscanf(const char *restrict format, va_list ap);
int vfscanf(FILE *restrict stream,
           const char *restrict format, va_list ap);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

vscanf(), vfscanf():
    _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

DESCRIERE
Familia de funcții scanf() scanează datele de intrare formatate ca sscanf(3), dar citite dintr-un FILE. Este foarte dificil de utilizat corect aceste funcții și este preferabil să se citească linii întregi cu fgets(3) sau getline(3) și să se analizeze ulterior cu sscanf(3) sau cu funcții mai specializate, cum ar fi strtol(3).

Funcția scanf() citește datele de intrare din fluxul de intrare standard stdin, iar fscanf() citește datele de intrare din indicatorul de flux stream.

Funcția vfscanf() este analogă cu vfprintf(3) și citește datele de intrare de la indicatorul de flux stream utilizând o listă de indicatori cu argument variabil (a se vedea stdarg(3). Funcția vscanf() este analogă cu vprintf(3) și citește de la intrarea standard.

VALOAREA RETURNATĂ
În caz de reușită, aceste funcții returnează numărul de elemente de intrare care s-au potrivit cu succes și au fost atribuite; acesta poate fi mai mic decât cel prevăzut sau chiar zero, în cazul unui eșec de potrivire inițială.

Valoarea EOF este returnată dacă se ajunge la sfârșitul intrării înainte de prima conversie reușită sau de un eșec de potrivire. EOF este, de asemenea, returnată în cazul în care apare o eroare de citire, caz în care se activează indicatorul de eroare pentru flux (a se vedea ferror(3)), iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

EAGAIN
    Descriptorul de fișier subiacent lui stream este marcat ca fiind neblocant, iar operațiunea de citire s-ar bloca.

EBADF
    Descriptorul de fișier subiacentlui stream nu este valid sau nu este deschis pentru citire.

EILSEQ
    Secvența de octeți introdusă nu formează un caracter valid.

EINTR
    Operația de citire a fost întreruptă de un semnal; a se vedea signal(7).

EINVAL
    Nu sunt suficiente argumente; sau format este NULL.

ENOMEM
    Memorie insuficientă.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
scanf(), fscanf(), vscanf(), vfscanf() | Siguranța firelor | MT-Safe locale

STANDARDE
C11, POSIX.1-2008.

ISTORIC
C99, POSIX.1-2001.

AVERTISMENTE
Aceste funcții îngreunează distincția dintre liniile noi și alte spații albe, ceea ce este deosebit de problematic în cazul intrărilor de tip „line-buffered”, cum ar fi fluxul de intrare standard.

Aceste funcții nu pot raporta erori după ultima specificație de conversie nesuprimată.

ERORI
Este imposibil să se știe cu exactitate câte caractere au consumat aceste funcții din fluxul de intrare, deoarece ele raportează doar numărul de conversii reușite. De exemplu, dacă intrarea este "123\n a", scanf("%d %d", &a, &b) va consuma cifrele, linia nouă și spațiul, dar nu și litera a. Acest lucru face dificilă recuperarea în cazul unei intrări nevalide.

CONSULTAȚI ȘI
fgets(3), getline(3), sscanf(3)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.