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.
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 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 |
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 |
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). |
Datatyperne defineret i header-filen stdio.hindeholder: