Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Tiedosvirtat Puskuroiduissa virroissa lukeminen/kirjoittaminen tapahtuu lohko kerrallaan stdin – puskuroitu (näppäimistö) stdout – purkuroitu (näyttö)

Samankaltaiset esitykset


Esitys aiheesta: "Tiedosvirtat Puskuroiduissa virroissa lukeminen/kirjoittaminen tapahtuu lohko kerrallaan stdin – puskuroitu (näppäimistö) stdout – purkuroitu (näyttö)"— Esityksen transkriptio:

1 Tiedosvirtat Puskuroiduissa virroissa lukeminen/kirjoittaminen tapahtuu lohko kerrallaan stdin – puskuroitu (näppäimistö) stdout – purkuroitu (näyttö) stderr – puskuroimaton (näyttö)

2 fscanf(),scanf() fprintf(),printf() fscanf(stream) lukee syötteen tietovirrasta stream scanf() vastaa fscanf():ää, mutta se lukee ainoastaa virrasta stdin Syöttölauseissa [lista] on hyväksyttävien syötemerkkien lista. [^lista] on ei hyväksyttävien merkkien lista fprintf(stream) tulostaa tietovirtaan stream printf() vastaa fprintf():ää, mutta se tulostaa ainoastaan tietovirtaan stdout

3 Muotoilumerkkijono % liput leveys [. tarkkuus] tyyppi muunnos leveys tarkoittaa minimileveyttä

4 Tietotyypin määräävä muunnosmerkki

5 fopen() – tiedoston avaaminen ”r”avaa tekstitiedosto lukemista varten ”w”avaa tekstitiedosto kirjoittamista varten, olemassa oleva tiedosto poistetaan ”a”luo tekstitiedosto kirjoittamista varten tai kirjoita olemassa olevan tiedoston loppuun ”r+”avaa tekstitiedosto lukemista ja kirjoittamista varten ”w+”avaa tekstitiedosto kirjoittamista ja lukemista varten, olemassa oleva tiedosto poistetaan ”a+”avaa tekstitiedosto lukemista ja kirjoittamista varten olemassa olevan tiedoston loppuun FILE *fopen(const char *nimi, const char *moodi); b edellisten lopussa on binääritiedostoille

6 Kirjastofunktioiden virheet fopen() voi epäonnistua useista eri syistä int main(void){ FILE *fp; if((fp=fopen("tiedosto.txt", "r")) == NULL){ perror("tiedostonavaaminen"); exit(EXIT_FAILURE); } return 0; } perror(const char *viesti);

7 getc(FILE *) ja putc(int, FILE *) getchar() luki merkin stdin:stä (näppäimistö) getc(fp) lukee merkin virrasta fp putc() kirjoittaa merkin tiedostovirtaan merkki=getc(stdin); putchar(merkki); merkki=getchar(); putc(merkki, stdout);

8 Tiedoston loppu getc() palauttaa erikoisarvon EOF kun yritetään lukea tiedoston lopusta char merkki; FILE *fp; fp=fopen(”tiedosto.txt”, ”r”); merkki = getc(fp); while(merkki != EOF){ putchar(merkki); merkki = getc(fp); }

9 fflush(FILE *) ja fclose(FILE *) fflush(fp) kirjoittaa puskurissa olevan datan fp:n osoittamaan outputtiin fclose() kirjoittaa puskurissa olevan datan ja sulkee tiedosvirran

10 Komentoriviargumentit int main(int argc, char *argv[]) Komentoriviargumenttejä voidaan käytää main():ssä kahden argumentit avulla Tapana kutsua niitä nimillä: argc ja argv 3 argc./print yksi kaksi argv./print yksi kaksi NULL./print\0 yksi kaksi

11 Tiedosto I/O fprintf() ja fscanf() toimivat kuten printf() ja scanf() tiedostovirroille Lukee rivinvaihtoon, tiedoston loppuun tai kunnes n-1 merkkiä on luettu Kirjoittaa merkkijonon tietovirtaan palauttaa EOF:n virhetilanteessa int fputs(const char *, FILE *); FILE *fgets(char *, int n, FILE *);

12 Satunnaishaku tiedostoista fseek() ja ftell() Käytetään normaalisti binäärimuodossa avatuihin tiedostoihin Siirtyy haluttuun kohtaan tiedostossa whence arvo määrittää siirtymismoodin: SEEK_SET – tiedoston alku SEEK_CUR – nykyinen paikka SEEK_END – tiedoston loppu int fseek(FILE *, long offset, int whence);

13 Binääri I/O: fread() ja fwrite() Lukee n data-alkiota joiden koko on k tavua ptr:n osoittamaan muistipaikkaan Kirjoittaa n data-alkiota joiden koko on k tavua ptr:n osoittamasta muistipaikasta size_t fread(void *ptr, size_t k, size_t n, FILE *); size_t fwrite(const void *ptr, size_t k, size_t n, FILE *);

14 feof() ja ferror() Lukufunktion palauttama EOF tarkoittaa tavallisesti tiedoston loppua Se voi myös tarkoittaa lukuvirhettä feof() ja ferror() funktioiden avulla voidaan tehdä luokittelu

15 Yhteenveto Tiedostovirrat: stdin, stdout, stderr fopen() tiedostojen avaamiseen Funktiot: perror, fprintf, fscanf fflush() Funktiot: fgetc, fputc, fgets ja fputs Komentoriviargumentit: argc ja argv Funktiot: fread, fwrite, fseek, ftell “b” optio fopen():lle binääritiedostoja varten


Lataa ppt "Tiedosvirtat Puskuroiduissa virroissa lukeminen/kirjoittaminen tapahtuu lohko kerrallaan stdin – puskuroitu (näppäimistö) stdout – purkuroitu (näyttö)"

Samankaltaiset esitykset


Iklan oleh Google