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

Compare with Current View Page History

« Previous Version 12 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

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); }
  }
}

Tekstitiedoston luku levyltä muuttujiin

void LukuLevylta()
{
  char teksti\[100\];
  FILE*fi;
  if ((fi = fopen("a:tiedot.txt","r")) !=NULL)
  {
   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");
  }
}

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)
  {
    printf(" tiedostoa ei voi avata ");
    return;
  }
  fwrite(juttu,sizeof(char),len(juttu),fp);
  fclose(fp);
  printf("talletin PAINA ENTER");
}

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)

  • No labels
You must log in to comment.