| scanf(3) | Library Functions Manual | scanf(3) |
scanf, fscanf, vscanf, vfscanf - conversia formatului FILE (fișierului) de intrare
Biblioteca C standard (libc, -lc)
#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);
vscanf(), vfscanf():
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
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.
Î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.
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 |
C11, POSIX.1-2008.
C99, POSIX.1-2001.
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ă.
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.
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.
| 15 iunie 2024 | Pagini de manual de Linux 6.9.1 |