ciao...

Ho scritto un programma in c++ per prendere in input delle stringhe da un file, ma nell'esecuzione mi a l'erroe segment faileur, programmo sotto linux!
Posto il codice dategli uno sguardo...

codice:
#include <iostream>
#include <fstream> 
#include <string> 

using namespace std; 

struct elem {
	string frase; 
	elem *ptr; 
};

typedef struct elem * elem_ptr; 

bool inserisci(elem_ptr& lista, string f); 

int main ( int argc, char *argv[] ) {
	if ( argc != 2) { 
		cerr << "Numero parametri non corretto" << endl; 
		return 0;
	}
	ifstream file;
	cout << argv[1]<<endl; 
	file.open(argv[1], ios::in); // contrallare se il file è stato aperto
	if (!file) { 
		cerr<<"Apertura file non riuscita\n"; 
		exit(1); 
	}
	string  frase; 
	elem_ptr lista = NULL; 
	while (!file.eof() ) {
			cout << "ciao" << endl; 
			getline(file,frase, '\n'); 
			if (!inserisci(lista, frase)){
			cerr << "Errore lettura del file\n" << endl; 
			exit (1); 
		}
		cout << lista->frase << endl;    
	}
	file.close();
	while ( lista != NULL) {
	cout << lista->frase << endl; 
	lista = lista->ptr; 
	}	
	return 0; 
}


bool inserisci ( elem_ptr& lista, string f) {
	cout << "fun"<<endl;
	if ( lista == NULL) {
		lista  = new elem; 
		lista->frase = f; 
		lista->ptr = NULL; 
	} else {
		elem_ptr temp = lista, prec_temp  = NULL; 
		elem_ptr nuovo = new elem;
	        nuovo->frase = f; 	
		while (lista != NULL && lista->frase > f) {
			prec_temp = temp; 
			temp = temp->ptr; 
		} 
		if ( temp == lista) lista = nuovo; 
		else prec_temp->ptr = nuovo; 
		nuovo->ptr = temp; 
         }
return true; 
}
[