Scroll to navigation

scanf(3) Library Functions Manual 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

Descriptorul de fișier subiacent lui stream este marcat ca fiind neblocant, iar operațiunea de citire s-ar bloca.
Descriptorul de fișier subiacentlui stream nu este valid sau nu este deschis pentru citire.
Secvența de octeți introdusă nu formează un caracter valid.
Operația de citire a fost întreruptă de un semnal; a se vedea signal(7).
Nu sunt suficiente argumente; sau format este NULL.
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 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.

2 mai 2024 Pagini de manual de Linux 6.8