Ho questo programma che memorizza da un file dei nomi e li inserisce in una lista. Tuttavia dopo che l'inizializzazione è eseguita e pure la stampa, l'applicazione non termina. Bensì rimane in attesa, come se si aspettasse che dovessi inserire dei valori. Questo è il codice, qualche idea?
codice:
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int const MAX_S = 50;
struct elem{
int inf;
char str[MAX_S];
elem* next;
};
typedef elem* lista;
class Ufficio{
lista testa;
int num;
public:
Ufficio(const char*);
void arriva(const char*);
friend ostream& operator<<(ostream&, const Ufficio&);
};
//Function
void insTesta(lista& li, const char* s, int n){
elem* p = new elem;
strcpy(p->str, s);
p->inf = n;
p->next = li;
li = p;
}
//Function Member
Ufficio::Ufficio(const char* s){
testa = NULL;
num = 1;
char str[MAX_S];
ifstream in(s);
if(!in)
{
cerr << "Errore apertura file";
exit(1);
}
while(in >> str)
arriva(str);
}
void Ufficio::arriva(const char* s){
elem* p;
elem* q;
for(q=testa; q!=NULL; q=q->next)
p = q;
q = new elem;
q->inf = num++;
strcpy(q->str, s);
q->next = NULL;
if(testa==NULL)
testa = q;
else
p->next = q;
}
ostream& operator<<(ostream& os, const Ufficio& uf){
os << "Cognome\t\t" << "Numero\n";
elem* p = uf.testa;
lista prov = NULL;
while(p!=NULL)
{
insTesta(prov, p->str, p->inf);
p=p->next;
}
p = prov;
while(p!=NULL)
{
os << p->str << "\t\t" << p->inf << endl;
p = p->next;
}
return os;
}
int main(){
Ufficio uf("registro.txt");
cout << uf;
return 0;
}