View Single Post
Old 07-02-2008, 16:15   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da noodles83 Guarda i messaggi
@marra11mg: possono essere anche i ordine sparso.

Vi chiedo ancora aiuto... ho un problema piccolo e uno grosso.

PROBLEMA PICCOLO:
vorrei sapere che warning è questo che mi viene sempre prodotto e non riesco ad eliminare?

In file included from memManager.c:8:
memManager.h:23: warning: no semicolon at end of struct or union

ne sapete qualcosa?


PROBLEMA GROSSO:
sto implementando questa funzione int psave(long game_id, short block_id, byte *buffer, int size);
vi riporto un pezzo di codice...

typedef unsigned char byte; /*posto in memManager.h*/
byte memory[65536]; /*è fuori dalla funzione, posta come variabile globale*/

/*nella funzione che sto implementando scrivo*/
mytable=(DATA*)&memory[0];
mytable->gioco=game_id;
mytable->blocco=block_id;
mytable->blocco_size=size+sizeof(DATA);
mytable->pages= n;
mytable->flag=1;
mytable->time=time(NULL);
memcpy(&memory[sizeof(DATA)],buffer,size); /*copio i dati in memoria*/

se provo a fare printf("%s", memory[sizeof(DATA)]) mi da segmentation fault.... come mai???
memcpy(&memory[sizeof(DATA)],buffer,size); /*copio i dati in memoria*/

Che cosa vuoi fare con questa istruzione ? Perché indicizzi memory con sizeof(DATA) ?

printf("%s", memory[sizeof(DATA)]);

Che senso ha ? C'è una stringa a quell'indirizzo ? Se vuoi stampare una stringa devi usare &memory[sizeof(DATA)], se non c'è una stringa a quell'indirizzo allora proprio non ha senso quella stampa.
In memory[sizeof(DATA)] c'è il primo byte di buffer.
cionci è offline   Rispondi citando il messaggio o parte di esso