Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Неожиданный break; в while(!fin.eof());

28K
08 мая 2008 года
tendik
32 / / 18.03.2008
Здраствуйте, программа читает текст из файла, делает изменение и пишет на другой файл.
Потом другая программа читает этот файл, там возникает проблема,то есть не читает до конца,
есть какой то блок текста является енд оф файлом для 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.
скажите как разобратся этой проблеммой, Спасибо!
28K
08 мая 2008 года
tendik
32 / / 18.03.2008
попробовал, после fout.write(text, 4); fout.flush();
ещё если отдельно взят тот блок тогда работает без проблем. проблемма в цикле с while ом...
1.8K
08 мая 2008 года
_const_
229 / / 26.11.2003
 
Код:
ifstream fin;
...
while(fin.read(...))
{
}
if (!fin.eof())
    ;    // ERROR!
28K
15 мая 2008 года
tendik
32 / / 18.03.2008
Ладно, я нашел точку ошибку - слабую месту программа.
Очень короткий пример:

#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?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог