PDA

View Full Version : [Ansi C] problemi di stampa su file.


Alex-88
29-01-2009, 22:34
Ciao ho realizzato un programma in c che dovrebbe crittografare e decrittografare un blocco di testo e stampare il risultato su video e in un file.
Finche facevo semplicemente le prove da stdout stampava i dati correttamente, una volta inserite le funzioni per la stampa da file ha iniziato a creare problemi. da stdout mi stampa determinati caratteri mentre su file ottengo caratteri diversi e questo mi crea problemi per la decrittografia.
Spero d'essere stato abbastanza chiaro nello spiegare il problema.
Grazie per l'aiuto

fero86
30-01-2009, 10:15
per stampare su stdout che funzione usavi? se ad esempio usavi printf ti sarebbe bastato sostituirla con fprintf.

riporta il codice se puoi, cosi (se non é troppo lungo :D) qualcuno proverá a cercare il problema.
scusa se sono generico ma senza il codice é difficile a dirsi.

Alex-88
30-01-2009, 13:03
Esattamente x la stampa da stdout ho usato printf
mentre su file ho provato con fprintf e putc.
In + non ho utilizzato neanke una funzione nuova ma una che avevo già realizzato in precedenza e che funzionava correttamente.

// Stampa del testo crittografato.
printf("\nTesto crittografato:\n");
for(i=0;i<Nk*4;i++) {
printf("%c ",out[i]);
fprintf(fl,"%x",out[i]);
}
printf("\n\n");
fclose(fl);

questa è una parte di codice riportarlo tutto sarebbe troppo lungo
prima ci sono dichiarazioni di variabili e controlli vari x la corretta apertura del file. Ho messo %x xk volevo vedere in un ultima prova il codice ascii dei caratteri che stampa in hex...che corrispondono con quelli stampati a video...ma se metto %c non corrispondono più.
Non capisco xk i caratteri nn li stampa su file correttamente

Mesh89
30-01-2009, 14:16
Non riesci ad estrapolare un pezzo di codice compilante che riproduca il problema? Così ci dici poco...

Ah, usa il tag code ;)

fero86
30-01-2009, 16:49
ma se metto %c non corrispondono più.
Non capisco xk i caratteri nn li stampa su file correttamente secondo me invece corrispondono correttamente, solo che tu credi che siano diversi perché quando apri il file con un editor di testo (Blocco Note?) il font usato li renderizza in maniera diversa dalla console; oppure é capitato per caso che il primo carattere sia il BOM (Byte Order Mark) e di conseguenza il file viene interpretato come UTF-8. secondo me il file contiene i dati giusti, il problema é altrove.

cionci
31-01-2009, 01:18
Ma è testo o dati binari per cui ogni byte può assumere qualsiasi valore fra 0 e 255 ?