previous next Up Title Contents Index

17.5.2 Rivi kerrallaan lukeminen

Ongelmaa voidaan osittain ratkaista lukemalla tiedostoa merkkijonoon aina rivi kerrallaan:
	  FILE *f; Tuote_tyyppi tuote; char rivi[80];
	...
	  while ( !feof(f) ) {
	    if ( f_lue_jono(f,N_S(rivi)) <= OLETUS ) continue;
	    sscanf(rivi,"%s |%lf |%d",&tuote.nimike,&tuote.hinta,&tuote.kpl);
	    printf("%- 20s %7.0lf %4d\n",tuote.nimike,tuote.hinta,tuote.kpl);
	  }
	... 
Tässäkin vaihtoehdossa on vielä muutamia huonoja puolia:
*
virheellinen rivi hyväksytään ja lopuille arvoille jää edellisen kerran arvot
*
sscanf käytetyllä formaatilla on vaarallinen, mikäli nimikekenttään sattuisi tulemaan nimike, jossa on yli 20 merkkiä
*
mikäli nimikekentässä tarvittaisiin nimi, jossa on välilyöntejä, menisi syöttö jälleen sekaisin
*
mikäli rivillä olisi ennalta tuntematon määrä kenttiä, ei tämä formaatti toimisi


previous next Up Title Contents Index