Visualizzazione dei risultati da 1 a 10 su 14

Discussione: problema lista [c]

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    16

    problema lista [c]

    ciao a tutti, sono nuova del forum e anche in tema di programmazione in c..
    stavo implementando questo codice per la lettura di dati da un file,
    ho riscontrato qualche problema..
    Il programma viene compilato senza problemi ma poi nell'esecuzione non mi restituisce alun valore.
    nel mio file ad esempio c'è scritto "z1 5 8.2".
    Non da nessun errore ma è come se uscisse senza motivo (l'if di controllo con l'exit l'ho aggiunto dopo, ma faceva comunque così).
    Inoltre non sono sicura della posizione del main cioè, va inserito prima o dove è adesso?
    grazie in anticipo

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    /*STRUTTURA DEL NODO DELLA LISTA*/
    struct nodo {
        char nome[5];
        double reale,
                     immaginario;
        struct nodo *succ;
    };
    
    char nome[5];
        double reale,
                     immaginario;
    
    
    /*CREAZIONE DELLA LISTA DA FILE*/
    struct nodo *crealista(void){
        struct nodo *nodo, *testa;
        testa = NULL;
        FILE *file = fopen("dist.txt", "r"); /*Apertura del file in modalità Lettura*/
        if(file==NULL) {
            perror("Errore in apertura del file");
            exit(1);
        }
    
    
        while(fscanf(file, "%s %lg %lg", nome, &reale, &immaginario) != EOF){ /*Fino alla fine del file chiamato "file"*/
            nodo = malloc(sizeof(struct nodo)); /*Alloca memoria per il nodo*/
            fscanf(file, "%s %lg %lg", nodo-> nome, &nodo-> reale, &nodo ->immaginario); /*Acquisisce la tripletta di dati*/
            nodo-> succ = testa; /*Il puntatore al nodo successivo punterà alla testa*/
            testa = nodo; /*La testa sarà il nodo appena creato*/
        }
        fclose(file); /*Chiusura del file*/
        return(testa); /*Restituisce il puntatore alla testa della coda*/
    }
    
    int main(void){
        
    
    /*STAMPA DELLA LISTA CREATA*/
    void stampa_lista(struct nodo *nodo){
        while (nodo != NULL){ /*Finchè non arrivo all'ultimo nodo*/
        printf(" %s + %g + %g\n", nodo->nome, nodo->reale, nodo->immaginario); /*Stampo le triple*/
        nodo = nodo->succ; /*Avanzo di nodo*/
        }
    }
    return(0);
    }
    Ultima modifica di LeleFT; 29-12-2014 a 14:29 Motivo: Aggiunti i tag CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.