Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [C] Serializzatore (fwrite/fread)

    Devo serializzare una struttura ma ci sto sbattendo la testa da ieri...

    il codice č questo... il problema č che quando ri tira fuori i dati... sono tutti diversi e incomprensibili... qualcuno ha qualche idea?

    codice:
    struct buffer buf; 
    main()
    {
    ...
    }
     
    void serialize(struct buffer b) 
    { 
    	int i= 0; 
    	int end = 0;
    	FILE *pFile; 
    	
    	printf("sono nella serialize(1)\n"); 
    	if ((pFile=fopen("s.dat", "wb"))==NULL){ 
    		printf("Il file non esiste!"); exit(1); 
    	} 
    	printf("sono nella serialize(2)\n"); 
    	while(end=0)
    	{
    		fwrite(&b,sizeof(struct buffer),1,pFile); 
    		end =1;
    	}
    
    	fclose(pFile); 
    	printf("Ho anche chiuso il file\n"); 
    } 
     
    void deserialize() 
    {
    	struct buffer b; 
    	int i= 0; 
    	FILE *pFile2; 
    	
    	printf("sono nella deserialize(1)\n");	 
    	
    	if ((pFile2=fopen("s.dat", "rb"))==NULL){ 
    		printf("Il file non esiste!"); exit(1); 
    	} 
    		printf("sono nella serialize(2)\n"); 
     
    	while(!feof(pFile2)) 
    	{ 
    		fread(&b,sizeof(struct buffer),1,pFile2); 
    	} 
    	fclose(pFile2); 
    	printf("1= %d; 2=%s; 3=%s; 4=%d; 5=%d; 6=%d;
    		7='%s'\n", b.mtype,b.loginDest,
    		b.loginMitt, b.msgid, b.pid, 
    		b.status, b.mtext); 
    	printBuffer(b);
    	printf("Ho anche chiuso il file\n"); 
    	//return buf; 
    }
    ---smile is your life---:-)---

  2. #2
    hai dimenticato un "=" nel while della funzione serialize quindi non ti scriveva nel file.
    codice:
    struct buffer buf; 
    main()
    {
    ...
    }
     
    void serialize(struct buffer b) 
    { 
    	int i= 0; 
    	int end = 0;
    	FILE *pFile; 
    	
    	printf("sono nella serialize(1)\n"); 
    	if ((pFile=fopen("s.dat", "wb"))==NULL){ 
    		printf("Il file non esiste!"); exit(1); 
    	} 
    	printf("sono nella serialize(2)\n"); 
    	while(end==0)
    	{
    		fwrite(&b,sizeof(struct buffer),1,pFile); 
    		end =1;
    	}
    
    	fclose(pFile); 
    	printf("Ho anche chiuso il file\n"); 
    } 
     
    void deserialize() 
    {
    	struct buffer b; 
    	int i= 0; 
    	FILE *pFile2; 
    	
    	printf("sono nella deserialize(1)\n");	 
    	
    	if ((pFile2=fopen("s.dat", "rb"))==NULL){ 
    		printf("Il file non esiste!"); exit(1); 
    	} 
    		printf("sono nella serialize(2)\n"); 
     
    	while(!feof(pFile2)) 
    	{ 
    		fread(&b,sizeof(struct buffer),1,pFile2); 
    	} 
    	fclose(pFile2); 
    	printf("1= %d; 2=%s; 3=%s; 4=%d; 5=%d; 6=%d;
    		7='%s'\n", b.mtype,b.loginDest,
    		b.loginMitt, b.msgid, b.pid, 
    		b.status, b.mtext); 
    	printBuffer(b);
    	printf("Ho anche chiuso il file\n"); 
    	//return buf; 
    }
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #3
    L'ho capito io in questo istante... grazie... per avermi aiutato...
    mi sento proprio un pinguino quando faccio di questi errori...!

    Grazie di tutto...
    ---smile is your life---:-)---

  4. #4

    Re: [C] Serializzatore (fwrite/fread)

    Originariamente inviato da mr.smile
    [B]
    codice:
    void serialize(struct buffer b) 
    { 
    [...]
           while(end==0) 
           {
    		fwrite(&b,sizeof(struct buffer),1,pFile); 
                    end= 1;
           }
    [...]
    } 
     
    void deserialize() 
    {
    [...]
    	while(!feof(pFile2)) 
    	{ 
    		fread(&b,sizeof(struct buffer),1,pFile2); 
    	} 
    [...]
    }
    Occhio che questo metodo non e` affatto portabile: non e` garantito il funzionamento ne` tra architetture diverse, ne` tra compilatori diversi, ne` tra versioni diverse dello stesso compilatore!
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

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.