Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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)