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 WHILEPä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 FORPä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.