|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2009
Messaggi: 34
|
[C++] Scrittura e Lettura non formattata da file
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! Codice:
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));
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Aug 2003
Città: Barletta (BA)
Messaggi: 939
|
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)
__________________
In a world without fences, who needs Gates? Power by: Fedora 8 - Mac OS X 10.4.11 Ultima modifica di nico159 : 04-07-2013 alle 20:06. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:10.


















