Buonasera a tutti,
ho un problema con la conversione da char a void pointer, ma in particolare con l'utilizzo del puntatore successivamente alla conversione. Per spiegare meglio il mio problema ho scritto un piccolo codice esemplificativo, che è il seguente:
#include <stdio.h>
#include <stdlib.h>
void stampaVoidPointer(void * p);
void * leggiCHARdaFile(FILE *f);
int main()
{
FILE *f;
void * p;
f=fopen("CHAR.txt","r");
p=leggiCHARdaFile(f);
printf("Main: Char from void pointer: %c\n",*((char*)p)); //STELLA
stampaVoidPointer(p);
fclose(f);
system("PAUSE");
return 0;
}
void stampaVoidPointer(void * p){
printf("In funzione: Char from void pointer: %c\n",*((char*)p));
}
void * leggiCHARdaFile(FILE *f){
char a= fgetc(f);
void * v=&a;
ungetc(a,f);
return v;
}
Il mio codice preleva tramite la funzione leggiCHARdaFile un carattere contenuto in un file, e lo trasforma in un putatore a void che verrà utilizzato successivamente nel main in due successive stampe. Il problema che si verifica è il seguente.. la stampa avviene una sola volta. Mi spiego meglio.. Eseguito così si visualizzerà il contenuto di p soltanto con la printf al rigo 'STELLA', mentre invece se commento il rigo 'STELLA' la stampa si verificherà all'interno della funzione stampaVoidPointer. Come mai succede questo? E' forse sbagliata la conversione? O cos'altro mi impedisce di utilizzare il puntatore più di una volta?
Chiaramente questo codice l'ho scritto apposta per evidenziare il problema che mi è sorto in un progetto ben più complesso in cui mi occorre fare queste operazioni e conversioni, che possono sembrare insignificanti in questo contesto.
Grazie a chi mi risponderà!