[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;
}