Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C++] File e struct

  1. #1

    [C++] File e struct

    Ciao!

    Sono alle prime armi con c++...

    Perdonatemi il disordine della sintassi e i casini che ho fatto...

    Non riesco a spostarmi dal primo valore della struct... rimane inchiodato li senza muoversi e mostra sempre la prima riga invece di mettere nella struct le altre...

    Avete idee di come risolvere?

    File tel.txt:

    2203 +390103532154 01/04/04 12:43.10 00:04:23
    2701 +390185327643 17/08/03 10:04.23 01:25:47
    2203 27/01/04 09:49.34 00:01:25
    2527 +1063363715 07/10/03 12:13.18 00:06:17
    2203 +390493699213 11/02/04 17:09.06 00:29:03
    2203 +393483532154 27/01/04 04:32.28 00:02:34
    2629 +490366593212 19/06/04 09:40.11 00:13:20


    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    	char interno[10], numero[20], data[20], ora[10];
    	char dore[4], dminuti[4], dsecondi[4];
    	char c, tmp[10];
    	int i = 0;
    	int temp1,temp2;
    
    
    char* leggi(FILE *f)
    	{
    
    while ( ( c = getc (f) ) != ' ' )
    {
    
    	if ( c == NULL )
    		return NULL;
    
    	interno[i++] = c;
    
    }
    
    interno[i]='\0';
    
    
    if ( ( c = getc (f) ) == '+' ) // caso in cui c'è il numero di telefono
    {
    	i = 0;
    	numero[i++] = c;
    	while ( ( c = getc (f) ) != ' ' )
    		{
    
    			numero[i++] = c;
    
    		}
    
    	numero[i]='\0';
    	fscanf (f,"%s",data);
    
    }
    
    else
    {	
    	data[i++] = c;
    	while ( ( c = getc (f) ) != ' ' )
    		{
    
    			data[i++] = c;
    			
    		}
    data[i]='\0';
    }
    
    	fscanf (f, "%s", ora);
    
    i = 0;
    
    while ( ( c = getc (f) ) != ':' )
    		{
    
    			dore[i++] = c;
    			
    		}
    
    dore[i]='\0';
    
    i = 0;
    
    while ( ( c = getc (f) ) != ':' )
    		{
    
    			dminuti[i++] = c;
    			
    		}
    dminuti[i]='\0';
    	
    i = 0;
    
    while ( ( c = getc (f) ) != '\n' )
    		{
    
    			dsecondi[i++] = c;
    			
    		}
    dsecondi[i]='\0';
    	}
    
    
    
    
    struct lista {
    	char *interno;
    	char *numero;
    	char *data;
    	char *ora;
    	int	dore;
    	int dminuti;
    	int dsecondi;
    	lista *next;
    } *current;
    
    struct general {
    	lista *primo;
    	lista *ultimo;
    } elenco;
    
    
    
    void inserisci(char *e1, char *e2, char *e3, char *e4, int e5, int e6, int e7) 
    {
    
    	lista *nuovo;
    	nuovo = new lista;
    	nuovo->interno = e1;
    	nuovo->numero = e2;
    	nuovo->data = e3;
    	nuovo->ora = e4;
    	nuovo->dore = e5;
    	nuovo->dminuti = e6;
    	nuovo->dsecondi = e7;
    
    	current = nuovo;
    	nuovo->next = NULL;
    
    }
    
    
    void printa(void){
    
    printf ("%s %s %s %s %d:%d:%d", current->interno, current->numero, current->data, current->ora, current->dore,current->dminuti,current->dsecondi);
    
    }
    
    
    
    
    int main ()
    {
    
    	char *e1, *e2, *e3, *e4;
    	int e5,e6,e7;
    
    FILE * f;
    	f = fopen ("tel.txt","r");
    
    leggi(f);
    
    
    
    while ( (e1 = strdup(interno)) != NULL)
    {
    e2 = strdup(numero);
    e3 = strdup(data);
    e4 = strdup(ora);
    e5 = atoi(dore);
    e6 = atoi(dminuti);
    e7 = atoi(dsecondi);
    inserisci(e1,e2,e3,e4,e5,e6,e7);
    
    printa();
    
    current = current->next;
    
    }
    
    
    	fclose (f);
    
    
      return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    In effetti e' un po' incasinato ed e' difficile da seguire ...

    In ogni caso, dato il problema che lamenti, l'attenzione si dovrebbe concentrare su quel puntatore next che sta nella struttura per la lista ...

    Non trovo infatti nessuna linea che aggiorni tale puntatore durante la lettura in modo da collegare tutti gli elementi della lista ...

  3. #3
    E' sbagliato il modo di gestire le struct e anche proprio l'algoritmo... un po' considero array ... un po' puntatori...

    è un casino

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.