Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C:txt tietojen hakeminen

Pievi [05.11.2013 01:18:37]

#

Terve. Onko jotenkin mahdollista hakea .txt tiedostosta tietoja ja tulostaa niitä näkyviin?
Olen yrittänyt alla olevalla koodia mukkaamalla saada mutta en ole onnistunut. Txt tiesotossa on allekkain tietoja esim:
auto = 1
pyörä = 2
vene = 7
Ajatuksena olisi saada pelkästään esim pyörän tieto (2) tulostettua. Ongelmaahan tietenkin lisää kun txt tiedostoja on erilaisia ja pyörän paikka ei saata olla samalla rivillä kuin tässä esimerkissä.
Mitään ideoita?

int main()
{
    FILE *ptr_file;
    char buf[1000];
    int hinta = 10;
    ptr_file =fopen("test.txt","r");
    if (!ptr_file)
        return 1;

    while (fgets(buf,1000, ptr_file)!=NULL)
        printf("%s",buf);

    hinta = buf
    printf("%d",hinta);

    fclose(ptr_file);
    return 0;
}

Teuro [05.11.2013 07:55:33]

#

Kannattaa ensin hahmotella millä tavalla ongelma ratkeaa ihan ilman ohjelmakoodia. Suunnittele siis pöytämalli, jolla testaat ohjelmaasi. Esimerkiksi:

luo rakenne {nimi, määrä}
luo raketeelle taulukko ja varaa sopivasti tilaa
Avaa tiedosto lukutilaan
Lue rivi
paloittele rivi '=' merkin kohdalta
tallenna paloitellut osat rakenteeseen {nimi, määrä}

Nyt sinulla on tieto melko fiksusti jäsennetty paikalleen. Nyt voit vaikka kysyä käyttäjältä minkä tiedon hän haluaa noutaa. Syötteen perusteella selaat taulukon läpi ja tutkit löytyykö haettua sanaa.

Jos C ei ole pakollinen kieli, niin C++ tarjoaa oleellisesti mukavamman tavan lähestyä ongelmaa. Tosin on olemassa muitakin mukavia kieliä ratkaista ongelmaa. Koulutehtävähän tämä lienee, joten kielivalinta lienee sitä myöten taputeltu.

Metabolix [05.11.2013 11:01:35]

#

Jos rivillä on aina tuolla tavalla sana ja luku, voit lukea rivin helpoiten fscanf-funktiolla.

char sana[100];
int luku;
fscanf(ptr_file, "%99s = %d", sana, &luku);

Sitten voit tutkia strcmp-funktiolla, onko sana "pyörä".

Vastaus

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

Tietoa sivustosta