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