h2. Yleistä
Ohjelman käsittelemä tieto halutaan usein tallettaa levylle uutta käyttöä varten. Tieto voidaan tallentaa teksti tai binäärimuodossa.
h2. 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
h2. 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();
getch(); }
}
h2. Tekstitiedoston luku levyltä muuttujiin
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 printf("\n virhe PAINA ENTER");
getch();
}
}
getch(); }
}
h2. Binääritiedostojen käsittely
void BinTiedostonKirjoitus()
{
FILE*fp;
{ 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;
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;
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) |