[RISOLTO] Problema stampa lista da file [C]

di il
8 risposte

[RISOLTO] Problema stampa lista da file [C]

Ciao a tutti, ho iniziato un progetto in cui si deve stampare una lista da un file.
Il mio problema è che il programma non stampa la prima riga del file; vi posto il frammento di codice.. Qualcuno sa spiegarmi come fare a risolvere il mio problema? Grazie..
void stampa_lista(p_elemento nodo){
	
	printf("Contenuto lista:\n");
	
	if(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF){
		while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
			printf("%s = %g + i%g\n", id, reale, immaginario);
			nodo = (Elemento *)malloc(sizeof(Elemento));
			strcpy( nodo->id, id );
        		nodo->reale = reale;
        		nodo->immaginario = immaginario;
        		nodo->next = elem_succ;
        		elem_succ = nodo;
		}
	}else{
		printf("La lista è vuota\n");
		exit(2);
	}

8 Risposte

  • Re: [RISOLTO] Problema stampa lista da file [C]

    Fai la fscanf due volte:
    
    if(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF){
          while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
    
  • Re: [RISOLTO] Problema stampa lista da file [C]

    minomic ha scritto:


    Fai la fscanf due volte:
    
    if(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF){
          while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
    
    Ci avevo già pensato ma se dichiaro prima una variabile "x" e la uso così:
    
    if(x=fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF){
          while(x != EOF ) {
    
    mi va in loop. Non riesco a trovare altre soluzioni
  • Re: [RISOLTO] Problema stampa lista da file [C]

    Ma se fai solamente
    
    while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
    
    cosa succede?
  • Re: [RISOLTO] Problema stampa lista da file [C]

    minomic ha scritto:


    Ma se fai solamente
    
    while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
    
    cosa succede?
    Avevo già provato la stampa tutta però se lascio così come faccio a mettere il caso del "se la lista è vuota"?
    Cosa posso mettere nell'if?
  • Re: [RISOLTO] Problema stampa lista da file [C]

    Se la lista è vuota allora la fscanf restituisce subito EOF e il while non viene eseguito nemmeno una volta. Non capisco quale sia il problema...
  • Re: [RISOLTO] Problema stampa lista da file [C]

    minomic ha scritto:


    Se la lista è vuota allora la fscanf restituisce subito EOF e il while non viene eseguito nemmeno una volta. Non capisco quale sia il problema...
    Il mio problema era la stampa di quel "la lista è vuota", non so dove posso mettere la printf avendo solo il while, non so se riesco a spiegarmi..
  • Re: [RISOLTO] Problema stampa lista da file [C]

    Un modo banale ma probabilmente un po' stupido:
    
    int almeno_un_elemento = 0;
    while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
        if(almeno_un_elemento == 0) almeno_un_elemento = 1;
        ...
    }
    if(almeno_un_elemento == 0)
        // la lista e' vuota
    
  • Re: [RISOLTO] Problema stampa lista da file [C]

    minomic ha scritto:


    Un modo banale ma probabilmente un po' stupido:
    
    int almeno_un_elemento = 0;
    while(fscanf(fp, "%s %lg %lg", id, &reale, &immaginario) != EOF ) {
        if(almeno_un_elemento == 0) almeno_un_elemento = 1;
        ...
    }
    if(almeno_un_elemento == 0)
        // la lista e' vuota
    
    Così funziona al massimo cercherò di ottimizzarlo in seguito comunque grazie 1000
Devi accedere o registrarti per scrivere nel forum
8 risposte