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.