Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [C] File e Liste...

  1. #1

    [C] File e Liste...

    Come faccio ad inserire in un una lista tutte le righe di un file ???

    Le Righe del File le Prendo con la fgets()
    la struttura della lista e' questa...

    codice:
    struct list_file {
          char *line;
          struct list_file *prev;
          struct list_file *next;
    };
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  2. #2
    Utente di HTML.it L'avatar di /dev/null
    Registrato dal
    May 2004
    Messaggi
    1,936

    Re: [C] File e Liste...

    Originariamente inviato da kNemo
    Come faccio ad inserire in un una lista tutte le righe di un file ???

    Le Righe del File le Prendo con la fgets()
    la struttura della lista e' questa...

    codice:
    struct list_file {
          char *line;
          struct list_file *prev;
          struct list_file *next;
    };
    Non ho ben capito cosa ti serve :master:
    Vuoi sapere come si usa la funzione fgets? Come usare le liste?
    Se (come ho capito io) cerchi invece il modo di procedere fai così:

    Leggi una linea (finisce quando trovi '\n'), allochi un elemeno della lista se hai trovato qualche carattere, poi allochi il puntatore chiamato line e lo fai grosso quanto la dimensione della linea letta, quindi ci copi dentro il valore della linea...
    Ripeti quindi tutto finchè raggiungi EOF...

    Ultima modifica ad opera dell'utente /dev/null il 01-01-0001 alle 00:00

  3. #3
    Quello che hai capito tu e' giustissimo solo che non so' come si gestiscono i due puntatori prev e next...

    codice:
    ...
    if ((fp = fopen("mioFile", "rt")) == NULL) return (1);
    
    while (!feof(fp)) {
         fgets(buf, DIM_BUF, fp);
         
         // Alloca Elemento Lista...
         // Alloca Stringa nel Puntatore line della Lista...
         // Puntatore prev ???
         // Puntatore next ???
    }
    fclose(fp);
    ...
    PoWered by:
    Gentoo 1.5.3 - Kernel 2.6.7
    Debian Sid - Kernel 2.6.7 - Bash 3.0
    Slackware current - Kernel 2.6.7

  4. #4
    codice:
    #pragma warn -sus      // i "Suspicious pointer conversion" scassano le balle... così li zittisci!
    
    
    #include <stdio.h>
    
    
    int main()  {
        typedef struct list_file {
    	char *line;
    	struct list_file *prev;
    	struct list_file *next;
        } *start, *current, *tmp;
    
        ...       // altre dichiarazioni, apertura del file e quant'altro...
    
        if ((current=(list_file*) calloc(1, sizeof(list_file)))==NULL)  {
    	printf("\n\aErrore nell'allocazione della memoria!\n");
    	return(-1);
        }
        current->prev=NULL;
        current->next=NULL;
        start = (list_file*) current;
    
        while(!feof(fp))  {
    	...   // leggi la riga (pare che i tuoi problemi non stiano qui, cmq se vuoi
                  // qualche confronto chiedi pure)
    
    	tmp =  (list_file*) current;
    	if ((current->next = (list_file*)calloc(1, sizeof(list_file))) == NULL)  {
    	    printf("\n\aErrore nell'allocazione della memoria!\n");
    	    return(-1);
    	}
    
    	current = (list_file*) current->next;
    	current->next = NULL;
    	current->prev = tmp;
        }
    
        current = start;      // sorta di rewind della lista
    
        ...    // elaborazione e tutto quanto...
        ...
    
        fclose(fp);
    
        ...  // liberi la memoria allocata (se vuoi delle dritte chiedi pure)
    
        return(0);
    }
    ecco fatto!
    se vuoi chiarimenti posta posta posta!


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 © 2024 vBulletin Solutions, Inc. All rights reserved.