Auttakaa amatööriä! Tekstitiedosto näyttää seuraavanlaiselta:
merkki;malli;hinta;katsastettu;varusteet
volvo;S40;40000e;2006-08-08;ABS,ilmastointi,jne
mersu;c200;55000e;2006-12-12;ei mitään
Ja nyt täytyis sit pystyä tietysti muokkaamaan tuota tiedostoa:lisäämään/poistamaan tietoja... Miten tarkistan, että jokaisella rivillä on oikea määrä ';'-merkkejä ja että ne on oikeissa kohdissa? Miten saan päivämäärän lisättyä tuohon riville, kun lisään uuden rivin...
Kysymyksestä ei käy ilmi onko ensimmäinen rivi ohje ohjelmalle voi käyttäjälle. Oletan, että halutaan vain tutkia riveja 2--n.
Alla pseudokoodia. Strchr-funktio on C:tä (kts. man strchr
).
WHILE RIVEJA rivi<--LueRivi(); merkkeja<--0; apu<--rivi; WHILE apu<--strchr(apu, ';') merkkeja<--merkkeja+1; END WHILE IF merkkeja=4 Tulosta("OK"); END IF END WHILE
Päivämäärän muotoilu onnistuu stftime-funktiolla. Kyseinen funktion man-sivu sisältää myös esimerkin funktion käytöstä.
kiitoksia paljon, auttoi kovasti. Tuo päiväys-juttu jäi kyllä vähän avoimeksi. Funktion toiminta kyllä on ihan selkeä, mutta miten ymppään sen omaan koodiini.?? Entäpä jos nuo ';'-merkit tulee olla tietyillä paikoilla? Esim. jos 5., 9., 17. ja 24. merkki tulee olla ';'. Siihen en ole löytänyt toimivaa ratkaisua.
käsienkäsi kirjoitti:
Entäpä jos nuo ';'-merkit tulee olla tietyillä paikoilla? Esim. jos 5., 9., 17. ja 24. merkki tulee olla ';'.
Lisää pseudoa. Korvaat edellisestä kohdan
WHILE apu<--strchr(apu, ';') merkkeja<--merkkeja+1; END WHILE
seuraavanlaisella koodilla
FOR i:=1..strlen(rivi) IF rivi[i]=';' AND (i=5 OR i=9 OR i=17 OR i=24) merkkeja<--merkkeja+1; END IF END FOR
Päiväyksestä löytyy lisätietoa seuraavasta osoitteesta http://www.die.net/doc/linux/man/man3/strftime.
Aihe on jo aika vanha, joten et voi enää vastata siihen.