PDA

View Full Version : [C++] Scrittura e Lettura non formattata da file


HeroGian
04-07-2013, 17:26
Scusatemi, sto scrivendo un programma che lavora con dei file, in particolar modo deve leggere carattere per carattere, effettuare la codifica rsa del carattere e riscrivere il carattere codificato su un file binario.
Il problema è che quando una delle due funzioni viene eseguita, il programma va in segmentation fault.. potreste aiutarmi a capire il problema??
grazie!


void Codifica( int esp, long long int mod )
{
char CarCorrente; /**< Variabile in cui è salvato il carattere corrente prelevato dal file*/

ifstream leggi(NomeFileIn);
ofstream scrivi(NomeFileOut);

while( (CarCorrente = leggi.get()) != EOF )
{
scrivi.write(reinterpret_cast<char*>(CalcolaPotenza(CarCorrente, esp, mod)), sizeof(long long int));
}
}

void Decodifica( int esp, long long int mod )
{
long long int Corrente; /**< Variabile in cui è salvato il carattere corrente prelevato dal file*/

ifstream leggi(NomeFileIn);
ofstream scrivi(NomeFileOut);

while( !leggi.eof() )
{
leggi.read(reinterpret_cast<char*>(Corrente), sizeof(long long int));
scrivi.write(reinterpret_cast<char*>(CalcolaPotenza(Corrente, esp, mod)), sizeof(long long int));
}
}

nico159
04-07-2013, 18:16
reinterpret_cast non fa quello che pensi tu

La stai dicendo di trattare il tuo long long int come un puntatore di char
Ovvero stai dicendo a iostream di leggere e scrivere in una locazione di memoria che parte dal numero convetito in puntatore

Riorganizza il tuo codice per non usare reinterpret_cast e dai una lettura, seria, a cosa sono i puntatori e come funzionano - non avrai più problemi7

Un piccolo consiglio: sfrutta meglio iostream e gli algoritmi della STL (ce ne sono di utili anche per il tuo caso)