Osaako fgetc lukea myös rivinvaihdot ja vaihtaa rivin itsestään. Pitäisi siis lukea tiedostosta taulukkomuuttujaan esim. alue jossa ekalla rivillä on merkkejä 0-4-2-4 ja toisella 4-5-5-5 jne. Rivejä on vaikka kymmenen. Miten toteutan?
Näinkö,
while(tulos != NULL)
{
tulos = fgets(nimi, tiedosto);
}
Ja tulos muuttujasta otan sitten taulukkoon???
Näinkö,
while(tulos != NULL)
{
tulos = fgets(nimi, tiedosto);
}
Ja tulos muuttujasta otan sitten taulukkoon???
Vastaukset 5
Vanhimmat
hakusanaksi fgetc ja heti tuli vielä esimerkein
http://www.cplusplus.com/ref/cstdio/fgetc.html
Näinpä, mutta miten ja missä muodossa se tallentaan sen siihen muuttujaan (int,char)?
Pystynkö laittaa sitten suoraan, että
taulu[x][y]=arvomikasaatiintiedostosta;
Periaatteessa voit, mutta palautusarvo on int-muotoa, joten virhearvot (-1) tulisi tarkistaa ja käsitellä muulla tavalla
eli
int luettuarvo;
...
if (luettuarvo != EOF) taulu[x][y] = luettuarvo;
esim. näin?
FILE *fp; // Tiedosto-osoitin
char rivi[100];
int i;
// Luetaan tiedostosta rivi
while (fgets(rivi,100,fp) != NULL) {
// Sijoitetaan rivi taulukon indeksiin.
taulukko[i]=rivi;
i ;
}
Mikähän tuossa on muuttujan taulukko tyyppi ?
Oletetaan sen olevan vaikka char *taulukko[10], eli kymmenen kokoinen taulukko, jonka elementit ovat osoittimia char-tyyppiin. Siinä tapauksessa tuo koodi tallentaa jokaiseen taulukon elementtiin saman arvon, eli muuttujan rivi osoitteen. Tämä ei liene haluttu lopputulos.
fgets muuten tallentaa myös rivinvaihtomerkin fgetsille annettuun osoitteeseen, mikäli rivinvaihtomerkki tuli vastaan syötteessä.
i-muuttujan voisi myös alustaa nollaksi.