[C++] Lettura da file:

Ster24
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?

Risposte
vict85
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.
#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;
}

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.