Stdio.h

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 24. maj 2014; checks kræver 14 redigeringer .

stdio.h (fra engelsk  standard input/output header  - standard input/output header file ) - headerfil for C standardbiblioteket, der indeholder makrodefinitioner , konstanter og erklæringer af funktioner og typer, der bruges til forskellige standard input- og outputoperationer. Funktionaliteten er arvet fra den "bærbare I/O-pakke" skrevet af Mike Lesk fra Bell Labs i begyndelsen af ​​1970'erne. [1] C++ bruger også cstdio- header-filen sammen med den lignende header-fil for kompatibilitet . stdio.h

Funktionerne erklæret i stdio.her meget populære, fordi de, som en del af C Standard Library , er garanteret at fungere på enhver platform, der understøtter C. Applikationer på individuelle platforme kan dog have grunde til at bruge I/O-funktionerne på selve platformen i stedet for stdio.h.

Standarden definerer et sådant koncept som en strøm  - et sekventielt sæt af information, der kan input eller output, kan leveres både af en fil og af en enhed (for eksempel en terminal ) [2] . Strømmen kan være tekst eller binær . En tekststrøm er en sekvens af tegn. Imidlertid kan udtrykket "tegn" i denne sammenhæng betyde både et læsbart tegn og et kontroltegn (f.eks. et lodret tabulatortegn eller et ende-på-fil-tegn). Tegnene i tekststrømmen er sammenkædet i linjer. Hver linje slutter med en ny linje eller et slutningstegn. En binær strøm er en sekvens af bytes, der transparent kan repræsentere enhver information (inklusive tekst). En strøm kan være i en af ​​tre tilstande: urettet (standard), karakter bred eller bitvis. Tilstanden bestemmes af den sidste funktion, der brugte denne tråd.

Eksempel på brug

Alle funktioner i C-sproget (og dets mange varianter) er deklareret i header-filer . Programmerere skal således inkludere filen stdio.hmed kildekoden for at kunne bruge de funktioner, der er angivet i den.

#include <stdio.h> int main ( ugyldig ) { int ch ; mens (( ch = getchar ()) != EOF ) putchar ( ch ); putchar ( '\n' ); returnere 0 ; }

Programmet ovenfor læser alle input fra standard input og udsender det byte for byte til standard output, tilføjer et nylinjetegn til slutningen af ​​outputtet.

Funktioner

Funktioner deklareret i stdio.hkan generelt opdeles i to kategorier: funktioner til filoperationer og funktioner til I/O-operationer.

Navn Noter
Funktioner til filoperationer
fclose lukker den fil, der er knyttet til FILE *-værdien, der er sendt til den
fopen, freopen, fdopen åbne en fil til visse typer læsning og skrivning
remove sletter filen (sletter den)
rename omdøber filen
rewind fungerer som fseek(stream, 0L, SEEK_SET) kaldet på en stream, med fejlindikatoren nulstillet
tmpfile opretter og åbner en midlertidig fil, der slettes, når den lukkes med fclose()
Funktioner til I/O-operationer
clearerr sletter EOF og fejlindikatorer for den givne strøm
feof kontrollerer, om EOF -indikatoren er indstillet til den givne strøm
ferror kontrollerer, om der er indstillet en fejlindikator for den givne strøm
fflush tvinger output til at blive bufferet til den fil, der er knyttet til strømmen
fgetpos gemmer positionen af ​​streamens filmarkør knyttet til dets første argument (FILE *) til dets andet argument (fpos_t *)
fgetc returnerer et tegn fra filen
fgets modtager en streng (der slutter på newline eller end-of-fil) fra en stream (såsom en fil eller stdin)
fputc skriver et tegn til strømmen
fputs skriver en streng til strømmen
ftell returnerer en filpositionsmarkør, der kan sendes til fseek
fseek producerer en forskydning fra den aktuelle position i filen med det angivne antal bytes, eller fra dens begyndelse eller slutning i den angivne retning.
fsetpos indstiller streamens filpositionsmarkør forbundet med dets første argument (FILE *) som gemt i dets andet argument (fpos_t *)
fread læser data fra en fil
fwrite skriver data til en fil
getc læser og returnerer et tegn fra den givne strøm og ændrer filpositionsmarkøren; tillader det at blive brugt som en makro med de samme effekter som fgetc , bortset fra at det kan evaluere streamen mere end én gang
getchar har en lignende effekt som getc(stdin)
gets læser tegn fra stdinop til linjeskifttegn og gemmer dem i dets enkelt argument
printf, vprintf bruges til output til standard output
fprintf, vfprintf bruges til at output til fil
sprintf, snprintf, vsprintf bruges til at udskrive til et array af type char( streng i C-sprog )
perror skriver en fejlmeddelelse tilstderr
putc skriver og returnerer et tegn til strømmen og ændrer filpositionsmarkøren til det; kan bruges som en makro med de samme egenskaber som fputc , bortset fra at den kan behandle en strøm mere end én gang
putchar, fputchar ligner putc(stdout)
scanf, vscanf bruges til input fra standard input
fscanf, vfscanf bruges til input fra en fil
sscanf, vsscanf bruges til input fra et array char(dvs. streng i C-sprog )
setbuf angiver den buffer, der skal bruges af den angivne strøm
setvbuf indstiller buffertilstanden for den givne strøm
tmpnam opretter et midlertidigt filnavn
ungetc skubber en karakter tilbage til strømmen
puts udsender en tegnstreng tilstdout

Konstanter

stdio.hFølgende konstanter er defineret i header-filen :

Navn Noter
EOF et negativt heltal af typen int, der bruges til at angive slutningen af ​​en fil
BUFSIZ et heltal lig med størrelsen af ​​bufferen, der bruges af funktionensetbuf()
FILENAME_MAX størrelsen af ​​arrayet char, nok til at indeholde navnet på enhver fil, der kan åbnes
FOPEN_MAX antallet af filer, der kan åbnes på samme tid; mindst lig med 8
_IOFBF forkortelse for "input/output fuldt bufferet" (fuldt bufferet I/O); et heltal, der kan sendes til en funktion setvbuf()for at anmode om en input- og outputbufferblok for en åben strøm
_IOLBF forkortelse for "input/output line buffered" (lineært bufferet I/O); et heltal, der kan sendes til en funktion setvbuf()for at anmode om en input- og outputbufferlinje for en åben strøm
_IONBF forkortelse for "input/output ikke bufferet" (ikke bufferet I/O); et heltal, der kan sendes til en funktion setvbuf()for at anmode om ubufferet input og output for en åben strøm
L_tmpnam størrelsen af ​​arrayet char, tilstrækkelig til at gemme det midlertidige filnavn, der genereres af funktionentmpnam()
NULL makro ekspanderende nul pointer konstant ; det vil sige en konstant, der repræsenterer værdien af ​​en markør, der garanteret peger på en ikke -eksisterende adresse på et objekt i hukommelsen
SEEK_CUR et heltal, der kan overføres til en funktion fseek()for at anmode om positionering i forhold til den aktuelle position i filen
SEEK_END et heltal, der kan sendes til en funktion fseek()for at anmode om positionering i forhold til slutningen af ​​filen
SEEK_SET et heltal, der kan sendes til en funktion fseek()for at anmode om positionering i forhold til begyndelsen af ​​filen
TMP_MAX det maksimale antal unikke filnavne, der genereres af funktionen tmpnam(); mindst 25

Variabler

Følgende variable er defineret i header-filen stdio.h:

Navn Noter
stdin en pegepind til at FILEpege på standardinput (normalt tastaturet).
stdout en pegepind til at FILEpege på standard output (normalt et terminaldisplay).
stderr en pointer til at FILEpege på standardfejlstrømmen (normalt et terminaldisplay).

Typer

Datatyperne defineret i header-filen stdio.hindeholder:

  • FILE — en struktur, der indeholder information om en fil eller tekststrøm, der er nødvendig for at udføre dens input- og outputhandlinger, herunder:
    • filbeskrivelse
    • nuværende position i strømmen
    • end-of-fil-indikator
    • fejlindikator
    • en pegepind til en strømbuffer, hvis det er muligt
  • fpos_t er en ikke-array-type, der entydigt kan identificere positionen af ​​hver byte i en fil.
  • size_ter en heltalstype  uden fortegn , som er typen af ​​resultatet af at udføre operatoren sizeof.

Noter

  1. Kernighan, Brian; Rob Pike . UNIX-programmeringsmiljøet (neopr.) . — Englewood Cliffs: Prentice Hall , 1984. - S. pg. 200.
  2. ISO/IEC 9899:1999 . Hentet 7. august 2011. Arkiveret fra originalen 22. august 2011.

Links