/* Tiedoston selaaminen edestakaisin */ /* HUOM! Selaaminen ei välttämättä toimi, jos selattava tiedosto * on luotu eri ympäristössä (merkistökoodausongelmia) kuin missä * selaaminen tapahtuu. */ #include #define N 100 int main() { char c; FILE* f; /* Hakemistopolku! */ f=fopen("C:/Documents and Settings/yliopisto/Desktop/atk1_ma/h09e03.txt","r"); /* fgetc-funktio lukee tiedostosta yhden merkin ja palauttaa sen. */ c=fgetc(f); printf("%c--%i\n",c,c); c=fgetc(f); printf("%c--%i\n",c,c); c=fgetc(f); printf("%c--%i\n",c,c); /* Tiedostoa voi selata edestakaisin fseek-funktiolla. Se toimii seuraavasti: * * fseek(FILE* f, int number_of_bytes, int reference); * * Funktio siirtää tiedosto-osoittimen f paikkaan reference+number_of_bytes. * Viitesijaintina voidaan antaa jokin seuraavista: * * SEEK_SET -- tiedoston alku * SEEK_CUR -- tiedosto-osoittimen senhetkinen sijainti * SEEK_END -- tiedoston loppu * * Esimerkiksi komento * * fseek(f,-5,SEEK_END) * * siirtää tiedosto-osoittimen kohtaan, joka on viisi tavua ennen tiedoston * loppua. */ /* Siirrytään tiedostossa 2 tavua taaksepäin. Huom. fgetc-funktio * siirtää tiedosto-osoitinta. */ fseek(f,-2,SEEK_CUR); c=fgetc(f); printf("%c--%i\n",c,c); /* Siirrytään rivinsiirron kohdalle. */ fseek(f,3,SEEK_CUR); c=fgetc(f); printf("%c--%i\n",c,c); /* Funktio feof kertoo, onko tiedoston loppu saavutettu. */ c=fgetc(f); while(!feof(f)) { if( c != '\n' ) printf("%c",c); c=fgetc(f); } printf("\n"); fclose(f); return 0; }