Ho creato un semplicissimo programma che dopo aver fatto inserire i dati di una struttura, li copia nel file, ed in seguito li ordina, ma solo nella struttura, lasciando il vecchio ordinamento nel file.
Quando vado a leggere da file, leggo come se anche esso fosse stato ordinato ed inoltre il ciclo di uscita va in loop, continuando a stampare dati random.
codice:#include <iostream> #include <string.h> #include <fstream.h> using namespace std; class Madre { protected: fstream file; struct studente { char nome[10]; int eta; }pprova[5]; public: Madre(); void inserimento(); void lettura(); }; void Madre:: inserimento() { file.open("Prova.txt", ios:: app); int i; for(i=0;i<2;i++) { cout << "Inserisci il " << i+1 << "^ nome "; cin >> pprova[i].nome; cout << "Inserisci la " << i+1 << "^ eta "; cin >> pprova[i].eta; cout << endl; file << pprova[i].nome << " " << pprova[i].eta; } if(strcmp(pprova[0].nome, pprova[1].nome) > 0) { pprova[3] = pprova[0]; pprova[0] = pprova[1]; pprova[1] = pprova[3]; } for(i=0;i<2;i++) cout << "Dati " << i+1 << "^ persona:\n" << "Nome: " << pprova[i].nome << "\nEta: " << pprova[i].eta << "\n\n"; file.close(); } void Madre:: lettura() { file.open("Prova.txt", ios:: in); cout << "\n\nVisualizzazione file:\n"; int i=0; while(!file.eof()) { file >> pprova[i].nome >> pprova[i].eta; cout << pprova[i].nome << " " << pprova[i].eta << endl; i++; system("PAUSE"); } file.close(); } int main() { Madre a; a.inserimento(); system("PAUSE"); a.lettura(); }