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
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");
...
...
getch();
...
}
}
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
Wiki Markup |
---|
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"); getch(); } 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)