Oppure

Loading
29/07/17 18:18
perillitommaso
Salve, praticamente devo trasformare un file csv in file binario. L'idea è quella di leggere ogni record del file csv, che è diviso in campi separati da un ; e di memorizzare ogni campo in una struct e poi di memorizzare questa struct in un nuovo file binario.
Questo è il codice:
struct Admin{
	unsigned int IdUtenti;
	char Nome[20];
	char Cognome[20];
	char Username[20];
	char Password[20];
	char Email[50];
	char Cellulare[10];
};

csv=fopen("Admin.csv", "r");
	ADMIN=fopen("Admin.dat","ab+");

	        fscanf(csv, "%[^;]; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]", &a.IdUtenti, a.Nome, a.Cognome, a.Username,a.Password, a.Email, a.Cellulare);
	        fwrite(&a, sizeof(struct Admin),1, ADMIN);
			while(fgets(line,1024,csv)){
	            fscanf(csv, "%[^;]; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]",  &a.IdUtenti, a.Nome, a.Cognome, a.Username,a.Password, a.Email, a.Cellulare);
	            fwrite(&a, sizeof(struct Admin),1, ADMIN);
	        }

	fclose(csv);
	fclose(ADMIN);




vi lascio qui l'output:
in allegato
come mai mi esce questo ? :-|:-|:-|
Ultima modifica effettuata da perillitommaso 29/07/17 18:35
aaa
29/07/17 18:24
Ti "esce" cosa?

Il link non funziona ...

E poi, perché nel ciclo leggi due volte, una volta con la fgets e l'altra con la fscanf ?
Ultima modifica effettuata da 29/07/17 18:32
29/07/17 18:36
perillitommaso
Scusami, pensavo funzionasse. Adesso ho messo in allegato la foto, la puoi vedere?
Comunque la fgets dovrebbe funzionare come la feof no?
aaa
29/07/17 18:39
No .. la fgets legge da file, la feof serve a controllare se il file è terminato.
Non sono la stessa cosa, altrimenti non esisterebbero due funzioni. E se hai questi dubbi, ti consiglio di rivedere la documentazione.
29/07/17 18:47
perillitommaso
so che non sono la stessa cosa, quindi dovrei mettere la feof al posto della fgets ? hai visto l'output?
aaa
29/07/17 18:51
perillitommaso
Ho messo la feof al posto della fgets e mi va in loop
aaa
29/07/17 19:13
Qual è il codice adesso? Completo di main ...
29/07/17 20:23
perillitommaso

struct Admin{
	unsigned int IdUtenti;
	char Nome[20];
	char Cognome[20];
	char Username[20];
	char Password[20];
	char Email[50];
	char Cellulare[10];
};
 
csv=fopen("Admin.csv", "r");
	ADMIN=fopen("Admin.dat","ab+");
 
	        fscanf(csv, "%u; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]", &a.IdUtenti, a.Nome, a.Cognome, a.Username,a.Password, a.Email, a.Cellulare);
	        fwrite(&a, sizeof(struct Admin),1, ADMIN);
			while(!feof(csv)){
	            fscanf(csv, "%u; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]; %[^;]",  &a.IdUtenti, a.Nome, a.Cognome, a.Username,a.Password, a.Email, a.Cellulare);
	            fwrite(&a, sizeof(struct Admin),1, ADMIN);
	        }
 
	fclose(csv);
	fclose(ADMIN);
 
 


questo qui
aaa