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
Code Block |
---|
} 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); } } h2. Tekstitiedoston luku levyltä muuttujiin |
Tekstitiedoston luku levyltä muuttujiin
Wiki Markup |
---|
void LukuLevylta()
\{ char teksti\[100\]; |
...
FILE*fi;
...
if ((fi
...
=
...
fopen("a:tiedot.txt","r"))
...
!=NULL)
...
//tiedoston
...
avaus
{ 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");
getch(); }
}
Binääritiedostojen käsittely
void BinTiedostonKirjoitus()
{ FILE*fp;
Wiki Markup |
---|
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");
...
getch();
}
void BinTiedostonLuku()
{ FILE *fp;
Wiki Markup |
---|
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)