[C++] Lettura da file:
Salve a tutti:
Avrei un dubbio, in una lettura da file il prof mi riscontra il seguente errore: "non usi correttamente il parametro nomefile (così come dichiarato dovrebbe essere una variabile locale)." Non riesco a capire proprio il mio errore, io procedo cosi:
typedef char stringa [50];
void leggi_matrice( stringa nomefile, int&riga,int&colonna, ecc ecc)
Dove risiede l'errore?
Avrei un dubbio, in una lettura da file il prof mi riscontra il seguente errore: "non usi correttamente il parametro nomefile (così come dichiarato dovrebbe essere una variabile locale)." Non riesco a capire proprio il mio errore, io procedo cosi:
typedef char stringa [50];
void leggi_matrice( stringa nomefile, int&riga,int&colonna, ecc ecc)
Dove risiede l'errore?
Risposte
Non è affatto come ti ha scritto il professore, gli array si comportano come puntatori quando sono usati come parametri. Prova a lanciare questo codice e lo vedrai.
Nota che le cose sono diverse se usi, per esempio, una struttura.
#include <iostream> using namespace std; typedef char stringa[50]; void scrivi_stringa(stringa nomefile) { nomefile[0] = 'a'; nomefile[1] = 'b'; nomefile[2] = 'c'; nomefile[3] = 'd'; nomefile[4] = '\0'; } int main() { stringa A; A[0] = 'A'; A[1] = '\0'; cout << A << endl; scrivi_stringa(A); cout << A << endl; //system("PAUSE"); return 0; }
Nota che le cose sono diverse se usi, per esempio, una struttura.
#include <iostream> using namespace std; struct stringa { char testo[50]; }; void scrivi_stringa(stringa nomefile) { nomefile.testo[0] = 'a'; nomefile.testo[1] = 'b'; nomefile.testo[2] = 'c'; nomefile.testo[3] = 'd'; nomefile.testo[4] = '\0'; } int main() { stringa A; A.testo[0] = 'A'; A.testo[1] = '\0'; cout << A.testo << endl; scrivi_stringa(A); cout << A.testo << endl; //system("PAUSE"); return 0; }