previous next Up Title Contents Index

17.1.6 Esimerkki tiedoston käsittelystä


Olkoon meillä tiedosto nimeltä LUVUT.DAT:
	13.4
	23.6
	kissa
	1.9
	<EOF>     <-   ei aina välttämättä mikään merkki
Tiedostossa olisi yksi luku rivillä. Tehtävä ohjelma joka tulostaa lukujen summan ja keskiarvon, mikäli tiedostossa on vääriä merkkejä, ne jätetään huomiotta:

tiedosto\tied_ka.c - esimerkki tiedoston lukemisesta

	#include <stdio.h>
	
	int main(void)
	{
	  FILE *f;
	  double luku,summa,ka;
	  int n;
	
	  f = fopen("luvut.dat","rt");
	
	  if (!f) {
	    printf("Tiedosto ei aukea!\n");
	    return 1;
	  }
	
	  summa = 0.0;  n = 0;  ka = 0.0;
	
	  while ( !feof(f) ) {
	    if ( fscanf(f,"%lf",&luku)<=0 ) {
	      fgetc(f);
	      continue;
	    }
	    summa += luku;
	    n++;
	  }
	
	  fclose(f);
	
	  if ( n > 0 ) ka = summa/n;
	
	  printf("Lukuja oli %d kappaletta.\n",n);
	  printf("Niiden summa oli %5.2lf\n",summa);
	  printf("ja keskiarvo oli %5.2lf.\n",ka);
	
	  return 0;
	}

Tehtävä 17.150 Tiedoston lukujen summa

1.
Muuta tiedoston tied_ka.c - ohjelmaa siten, että väärän merkin kohdalla tulostetaan väärä merkki ja lopetetaan koko ohjelma.
2.
Muuta edelleen ohjelmaa siten, että väärät merkit tulostetaan näyttöön:
	Tiedostossa oli seuraavat laittomat merkit:
	kissa
	Lukuja oli... 
3.
Ilmoitusta ei tietenkään tule, mikäli tiedostossa ei ole laittomia merkkejä.

Tehtävä 17.151 Kommentit näytölle

Kirjoita ohjelma, joka kysyy tiedoston nimen ja tämän jälkeen tulostaa tiedostosta rivien /******* ja- - - - - - */välisen osan näytölle.


previous next Up Title Contents Index