You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

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
                     

Unknown macro: {                      fprintf(fi,"%06s","Minä");                      fprintf(fi," %06s","olen");                      fprintf(fi," %06s"," Teemu ");                      fprintf(fi," %12s"," Tietäväinen ");                      fprintf(fi," %15sn"," tiedän kaiken");                      fprintf(fi," %15s"," tietokoneista");                      fprintf(fi," %05s"," !!!!n");                      fclose(fi);                      }

                      else
                     

Unknown macro: {                      printf ("Tiedostoa ei saa avatua ");                      printf("n virhe PAINA ENTER");                      getch();                      }

        }

Tekstitiedoston luku levyltä muuttujiin

void LukuLevylta()
{
     char teksti[100];
     FILE*fi;
     if ((fi = fopen("a:tiedot.txt","r")) !=NULL) //tiedoston avaus
    

Unknown macro: {        while (fgets (teksti, 100,fi)) printf(teksti);         if (feof (fi)) printf("n Tiedosto luettun");         fclose (fi);     }

     else
   

Unknown macro: {        printf ("Tiedostoa ei saa avatua!! Tarkasta onko levy täynnä!!");        printf("n virhe PAINA ENTER");        getch();    }

}

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)
                      

Unknown macro: {                       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)
               

Unknown macro: {                       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)

  • No labels
You must log in to comment.