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;
}
- 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ä.
- Kirjoita ohjelma, joka kysyy tiedoston nimen ja tämän
jälkeen tulostaa tiedostosta rivien /******* ja- - - - - -
*/välisen osan näytölle.