Miten siis voi tekstitiedostosta lukea char-taulukkoon merkki kerrallaan? Osaan siis lukea tiedostosta, mutta miten teksti siirretään char-taulukkoon merkki kerrallaan?
char *taulukko; int koko, i; FILE *tiedosto = fopen(TIEDOSTON_NIMI,"r"); fseek(tiedosto,0,SEEK_END); // määritetään tiedoston koko koko = ftell(tiedosto); fseek(tiedosto,0,SEEK_SET); // palataan tiedoston alkuun taulukko = (char*)malloc(koko); // varataan muisti for(i=0; i<koko; i++) // luetaan tiedosto taulukkoon merkki kerrallaan taulukko[i] = fgetc(tiedosto);
ja lopuksi tietenkin:
free(taulukko); fclose(tiedosto);
Jos koko tiedoston lukee, kuten os:n esimerkissä, on parempikin tapa:
char *taulukko;
int koko, i;
FILE *tiedosto = fopen(TIEDOSTON_NIMI, "r");
/* Mennään loppuun, kysytään sijainti (eli tiedoston koko) ja palataan alkuun. */
fseek(tiedosto, 0, SEEK_END);
koko = ftell(tiedosto);
fseek(tiedosto, 0, SEEK_SET);
/* Varataan muistia koko+1, jotta sisällön perään mahtuu vielä nollamerkkikin. */
taulukko = (char *) malloc(koko + 1);
/* Luetaan taulukkoon "koko" kappaletta char-muuttujan kokoisia paloja. */
fread(taulukko, sizeof(char), koko, tiedosto);
fclose(tiedosto);
/* Laitetaan loppuun nollamerkki ja printataan ruudulle. */
taulukko[koko] = 0;
printf("%s", taulukko);
free(taulukko);Kiinnostaisi, kuinka sitä tiedostoa luet, jos et saa siirrettyä char-tauluun? Kun yleensä juuri char-tauluun on helpointa lukea. Yhden merkin saa tosiaan fgetc-funktiolla tai fscanf-funktiolla formaatilla "%c" ja parametrinä osoitin char-muuttujaan eli char-taulukon alkioon.
Kiitos!
Aihe on jo aika vanha, joten et voi enää vastata siihen.