Yleistä
Ohjelman käsittelemä tieto halutaan usein tallettaa levylle uutta käyttöä varten. Tieto voidaan tallentaa teksti tai binäärimuodossa.
Tekstitiedostojen käsittely
Tekstitiedostot ovat ns. perättäissaantitiedostoja, joita on kohtuullisen helppo käsitellä tiedosto-osoittimen (FILE* pTiedosto) avulla, lisäksi tarvitaan käskyt tiedoston avaukseen (open) ja sulku (close) sekä tiedostoon kirjoitukseen (fprintf) ja lukuun (fgets).
Tiedosto-osoitin esitellään seuraavasti:
FILE* pTiedosto;
open käskyllä tiedosto-osoitin saadaan osoittamaan luettavaa tai kirjoitettavaa paikkaa tiedostossa
pTiedosto = fopen("a:tiedot.txt","a");
Ensimmäinen parametri open- funktiossa on avattavan tiedoston nimi.
Toinen parametri määrää, mitä tiedostolle tehdään:
r = luku
w = kirjoitus tiedoston alusta
a = lisäys
Tekstitiedostoon kirjoitus
void KirjoitusTiedostoon() { FILE* fi; if ((fi = fopen("a:tiedot.txt","a")) \!=NULL) // tiedoston avaus { fprintf(fi,"%06s","Minä"); fprintf(fi," %06s","olen"); fprintf(fi," %06s"," Teemu "); fprintf(fi," %12s"," Tietäväinen "); fprintf(fi," %15s\n"," tiedän kaiken"); fprintf(fi," %15s"," tietokoneista"); fprintf(fi," %05s"," \!\!\!\!\n"); fclose(fi); } else { printf ("Tiedostoa ei saa avatua "); printf("\n virhe PAINA ENTER"); scanf("%c",&merkki); } } }
Tekstitiedoston luku levyltä muuttujiin
void LukuLevylta() { char teksti\[100\]; FILE*fi; if ((fi = fopen("a:tiedot.txt","r")) !=NULL) { while (fgets (teksti, 100,fi)) printf(teksti); if (feof (fi)) printf("\n Tiedosto luettu\n"); fclose (fi); } else { printf ("Tiedostoa ei saa avatua\!\! Tarkasta onko levy täynnä\!\!"); printf("\n virhe PAINA ENTER"); } }
Binääritiedostojen käsittely
void BinTiedostonKirjoitus() { FILE*fp; char juttu\[100\]; strcpy(juttu,"tämä on testi"); //tiedoston avaus if((fp=fopen("C:testi.bin","wb")) == NULL) { printf(" tiedostoa ei voi avata "); return; } fwrite(juttu,sizeof(char),len(juttu),fp); fclose(fp); printf("talletin PAINA ENTER"); void BinTiedostonLuku() { FILE \*fp; char juttu\[100\]; if((fp=fopen("a:testi.bin","rb")) == NULL) return; if(fread(juttu,sizeof(char),100,fp)!=1) { fclose(fp); return; } printf("\n Binääritiedoston lukuvirhe "); }
Yhdessä käytettävät funktiot
FILE *fi = fopen(nimi,"rt") - fscanf(fi,...) - fgets(...,fi) - feof(fi) -
fclose(fi)
FILE *fo = fopen(nimi,"wt") - fprintf(fo,...) - fclose(fo)