PDA

Visualizza la versione completa : Problema lettura carattere CTRL+Z


mastiffs92
29-08-2014, 12:12
Buongiorno a tutti, ho un problemino con questo programma che, praticamente, mi deve leggere il suo contenuto un carattere alla volta ed estrarre i bit relativi al suo codice ascii con gli operatori di bitwise.

La parte del bitwise funziona, infatti i bit 0 e 1 che mi restituisce corrispondono, per, ad un certo punto, interrompe la lettura dei caratteri dal file, come se avesse trovato un EOF all'improvviso (che non vero perch fino alla fine del file non ci arriva mai). Ho controllato bene a che carattere si ferma, ed un carattere che corrisponde a "00011010" in ASCII ( il carattere che appare premendo CTRL+Z). Non a caso, appena eliminiamo questo carattere dal file, la lettura prosegue. Avete per caso un'idea di come risolvere questa cosa? Vi posto il codice qui:


#include<iostream>
#include<fstream>
#include <stdlib.h>
#include <string.h>
#include <vector>
using namespace std;
int main(){
char f='\0';
int *buffer=new int[10000000];
int cnt=0;
ifstream file("p2.txt");
ofstream fout("decompressione.txt");

while(( f = file.get() )){
cout << "carattere trovato: " << f << "\n";
for(int i=0;i<8;i++){
/*if(f=='^Z')
buffer[i]={00011010};*/
buffer[cnt++]=(f<0);
f=f<<1;

}
f='\0';
}

for(int i=0; i<cnt; i++) {
if(i%8==0) cout << " ";
fout<<buffer[i];

}
file.close();

}



Grazie in anticipo per la risposta!

oregon
29-08-2014, 12:24
Il CTRL-Z proprio il carattere di EOF.

Devi aprire il file in binario per evitare il problema.

mastiffs92
29-08-2014, 12:42
Il CTRL-Z proprio il carattere di EOF.

Devi aprire il file in binario per evitare il problema.

Ah, ora ho capito, ho fatto cos e ho risolto, sei grande, ti ringrazio! ;)

Loading