Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Kaksiulotteisen merkkitaulukon tallentaminen C

Mike [13.05.2006 23:35:21]

#

Osaakohan kukaan auttaa seuraavanlaisessa ongelmassa? Pitäisi saada tallennettua kaksiulotteinen merkkitaulukko tekstitiedostoon. Olen saanut seuraavanlaisen koodin aikaiseksi, mutta kääntä antaa virheen "arithmetic on pointer to an incomplete type" fprintf-lauseesta.

#include <stdio.h>
#define RIVIT 5
#define SARAKKEET 5

void talletaTiedostoon(char taulukko[][]);

int main(void){

char taulukko[RIVIT][SARAKKEET] ={"abc4","ab4d","6eed","5c2d","6b2a"};

talletaTiedostoon(taulukko);

printf("\n\nOhjelman suoritus paattyy tahan\n\n");

return(0);
}


void talletaTiedostoon(char taulukko[][]){
FILE * tiedosto;
int i,j;

tiedosto = fopen("tiedosto2.txt", "w");
if( tiedosto == NULL){
printf("\nVIRHE TIEDOSTON AVAAMISESSA");
return;
}

 for (i=0; i < RIVIT; i++){
         for(j=0; j < SARAKKEET; j++){
                  fprintf(tiedosto, "%c", taulukko[i][j]);
                  }
                  }
fclose(tiedosto);
return;


}

Metabolix [14.05.2006 00:28:37]

#

Muuta funktion parametrin tyypiksi char ** taulukko. Voi olla, että silloin valmiiksi varattu taulukko ei enää kelpaa sellaisenaan funktiolle. Jotkut väittävät, että tilanteesta selviää muutamalla parametriksi &taulukko[0], mutta jos se ei toimi, kannattaa siirtyä muihin tapoihin, esimerkiksi näin:

// Taulu, johon kaikki mahtuu
char aputaulu[RIVIT*SARAKKEET];

// Taulu osoittimia, eli kaksiulotteinen taulukko
char *taulu[RIVIT];

// Taulun 0:s alkio osoittakoon aputaulun alkuun
taulu[0] = aputaulu;

// Loput alkiot siitä järjestyksessä eteenpäin. Seuraava alkaa edellisen lopusta.
for (i = 1; i < RIVIT; ++i)
  taulu[i] = &taulu[i - 1][SARAKKEET];

Vastaus

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

Tietoa sivustosta