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;
}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];
Aihe on jo aika vanha, joten et voi enää vastata siihen.