Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [C] Muuttujien poimiminen merkkijonosta

Burton [28.09.2009 01:50:44]

#

Ohjelmani lukee tekstitiedostosta rivejä, joilla on aina tietty muoto (esim. A:B -> C:D).

Nykyisessä versiossa ohjelma käy merkkijonoa läpi luottaen ':'-merkkeihin ja hieman huteran ja ruman viritelmän avulla kerää muuttujat taulukoihin. Kirjoittaessani koodia en voinut olla ajattelematta sitä, että joku toinen ohjelmoija on aikaisemmin törmännyt vastaavanlaiseen ongelmaan, ja fiksuudessaan on toteuttanut funktion, joka lukee muuttujat talteen paljon helpommin.

Eli onko C:lle olemassa funktiota, joka tekisi periaatteessa tämän:

Esim. funktio("A:B -> C:D", "%i:%i -> %i:%i", muuttuja1, muuttuja2, ...);

Minkä jälkeen muuttuja1 saisi arvon A, muuttuja2 arvon B jne.

Sisuaski [28.09.2009 04:00:42]

#

Funktio sscanf tekee aika tarkalleen sen mitä kuvaat tuossa. Ainoana erona esimerkkiisi on, että sille annetaan parametreina muuttujien osoitteet, eli:

#include <stdio.h>
...
int a,b,c,d;
sscanf("3:5 -> 64:36", "%i:%i -> %i:%i", &a, &b, &c, &d);

Vaihtoehtoisesti voit lukea arvot muuttujiin suoraan lukiessasi tekstitiedostoa funktiolla fscanf:

FILE* f = fopen("tiedoto.txt","r");
int a,b,c,d;
fscanf(f, "%i:%i -> %i:%i\n", &a,&b,&c,&d);

Vastaus

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

Tietoa sivustosta