Oppure

Loading
06/09/08 10:14
hasmet21
Salve ho un programma in C che legge da file dei dati, legge per prima cosa un numero intero,poi dovrebbe andare a capo e leggere due stringhe e un altro numero intero fino alla file del file, ma al primo giro del while non mi legge in maniera giusta la riga, non esiste una funzione tipo fseek per dire al programma di spostare il cursore della lettura a capo??? Vi posto un pezzo del codice
typedef struct{
    char cognome[41],numero[16];
    int data;
    }tel;
FILE *file1;
tel *vett;
int i=0,sinct;
file1=fopen("TEL.TXT","r");
vett=(tel*)calloc(1,sizeof(tel));
fscanf(file1,"%d",&sinct);
while(!feof(file1)){
       fscanf(file1,"%s %s %d",vett[i].cognome,vett[i].numero,&vett[i].data);
        i++;
       vett=realloc(vett,1);
       }
dimt=i;


Il file da cui legge ha un intero come primo carattere, poi c'è un \n e poi ha il formato:
<cognome> <numero> <data>

Penso che sia un problema che non mi legge correttamente il \n, però non escludo che potrebbe essere anche altro
aaa
06/09/08 16:08
Overflow
non ho capito bene come è strutturto il file.
in questo modo?
1
mone 123456 1991

la data ad esempio, quale è il formato? di certo non puoi mettere un data del tipo 01/01/2009 in un int. Quindi ho pensato sia solo l'anno.
Comunque ho scritto il codice:

#include <stdio.h>
#include <stdlib.h>

struct tel
{
	char cognome[41];
	char numero[16];
	int data;
};

int main()
{
	FILE *fp;
	tel* rub;
	int val,i=0;

	rub=(tel*)calloc(1,sizeof(tel));
	fp=fopen("C:\rubrica.txt","r");
	while(!feof(fp))
	{
		fscanf(fp,"%d",&val);
		fscanf(fp,"%s %s %d",rub[i].cognome,rub[i].numero,&rub[i].data);
		i++;
	}

	for(int i=0;i<2;i++)
		printf("%s,%s\n",rub[i].cognome,rub[i].numero);

	free(rub);
	return 1;
}
Ultima modifica effettuata da Overflow 06/09/08 16:09
aaa