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; }

Rispondi quotando