Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: tiedoston käsittely

käsienkäsi [12.12.2006 08:46:09]

#

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...

A-P [12.12.2006 09:57:35]

#

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

käsienkäsi [12.12.2006 11:16:02]

#

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.

A-P [12.12.2006 19:38:31]

#

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.3.html

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta