previous next Up Title Contents Index

17.1.2 Lukeminen

Muutamme hieman alkuperäistä suunnitelmaamme jäsenrekisteritiedoston sisällöstä:
	Kelmien kerho ry
	100
	; Kenttien järjestys tiedostossa on seuraava:
	id| nimi         |sotu       |katuosoite  |postinumero|postiosoite|kotipuhelin...
	1|Ankka Aku      |010245- 123U|Ankkakuja 6 |12345      |ANKKALINNA |12- 12324   ...
	2|Susi Sepe      |020347- 123T|            |12555      |Perämetsä  |           ...
	3|Ponteva Veli   |030455- 3333|            |12555      |Perämetsä  |           ... 
Olemme lisänneet rivin, jossa kerrotaan tiedoston maksimikoko. Tätähän tarvittiin jäsenlistan luomisessa. Nyt kokoa voidaan tarvittaessa muuttaa tiedostosta tekstieditorilla tarvitsematta tietää ohjelmoinnista mitään.

Tiedoston 1. rivi on siis kerhon koko nimi. AVATUSTA tiedostosta (jos avattu kahvaan nimellä f) tämä voitaisiin lukea seuraavasti:

	fgets(jono,80,f); 

Toisaalta meillä on valmis funktio f_lue_jono, joka suorittaa tarvittavia korjailuja, mikäli jono ei mahdu kokonaisuudessaan luettavaan muuttujaan:

	if ( f_lue_jono(f,kerho- >kerhon_nimi,
	                  sizeof(kerho- >nimi)) <OLETUS ) return TIEDOSTO_VAARIN; 

Seuraava rivi voitaisiin lukea
	fscanf(f,"%d",&kerho- >max_jasenia); 
Tässä ainoa riski on siinä, että riville jäisi vielä jotakin, jolloin joutuisimme poistamaan loppurivin. Siksi voitaisiin myös ensin lukea rivi merkkijonona ja tämän jälkeen sscanf- funktiolla ottaa jonosta kokonaisluku.
	if ( f_lue_jono(f,jono,sizeof(jono))<OLETUS ) return TIEDOSTO_VAARIN;
	if ( sscanf(jono,"%d",&kerho- >max_jasenia)<1 ) return TIEDOSTO_VAARIN; 


previous next Up Title Contents Index