ifstream fin;
...
while(fin.read(...))
{
}
if (!fin.eof())
; // ERROR!
Неожиданный break; в while(!fin.eof());
Потом другая программа читает этот файл, там возникает проблема,то есть не читает до конца,
есть какой то блок текста является енд оф файлом для while.
Программа завершает работу, не полностью читая текст.
код:
void main()
{
int i, l;
ifstream fin("put.txt");
ofstream fout("puts.txt");
bitset<30> textbits(0);
bitset<8> symbol(0);
char text[4];
while(!fin.eof()) { fin.read(text,3);
for(i = 0; i<24; i++) {
l = i%8;
if(l==0) symbol = text[i/8];
textbits = symbol[l];
}
textbits = encrypt(textbits.to_ulong(), k, N);//изменяется здесь,
//не важно для вас...
for(i=0; i<8; i++) symbol = textbits;
while(i < 30) { l = i%8;
if(l==0)
{ text[i/8-1] = symbol.to_ulong(); symbol = 0; }
symbol[l] = textbits; i++;
}
text[3] = symbol.to_ulong();
fout.write(text,4);
}
}
этa первая программа которая записывает. Вторая программа:
void main()
{
int i, l;
ifstream fin("puts.txt");
ofstream fout("putss.txt");
bitset<30> textbits(0);
bitset<8> symbol(0);
char text[4];
while(!fin.eof()) { fin.read(text,4);
for(i = 0; i<30; i++) { l = i%8;
if(l==0) symbol = text[i/8];
textbits = symbol[l];
}
textbits = encrypt(textbits.to_ulong());
for(i=0; i<8; i++) symbol = textbits;
while(i < 24) { l = i%8;
if(l==0) text[i/8-1] = symbol.to_ulong();
symbol[l] = textbits; i++;
}
text[2] = symbol.to_ulong();
fout.write(text,3);
}
}
Cбрасывает где то, каком то блоке, этот блок читается как то, возврашает значение end of для while.
скажите как разобратся этой проблеммой, Спасибо!
ещё если отдельно взят тот блок тогда работает без проблем. проблемма в цикле с while ом...
Код:
Очень короткий пример:
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
ofstream fout("put.txt");
ifstream fin("put.txt");
char c;
unsigned char s;
fout<<char(26);
fin>>c;
s = c;
cout<<c<<" = "<<(int)c<<endl;
cout<<s<<" = "<<(int)s<<endl;
}
Смотрите пожалуйста здесь, консольном выходить -52 и 204; как вы видели я хочу увидет число 26! подскажите, как я могу получить 26?