Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Не доконца почитываеться файл.


Автор: l2qwe 16.7.2008, 11:09
Не доконца прчитываеться фаил(фозвращает EOF до того как кончился фаил)

f_get=fopen("ws0082.txt","r");
if (f_get==NULL)continue;

i=0;
while((i<64000)||(c_get==EOF))
{            
     i++;   c_get=getc(f_get);
     if((c_get>=33)&&(c_get<=122))            
     {
    cout<<c_get;
     }                
}

Примерно на 4576 символе возвращаеться EOF но фаил больше.
Прикрепил текстовый фаил которые не полностю прчитывается. 

Автор: bsa 16.7.2008, 11:18
во-первых, файл не текстовый.
во-вторых, у этого файла ты выводишь только те символы, которые не меньше 33 и не больше 122. Попробуй вывести какой-нибудь текстовый файл с английским текстом.

Автор: l2qwe 16.7.2008, 11:24
я знаю что вывожу только латынь цифры и тому подобно, но вопрс не в выводе на экран а в том что fgetc возвращает EOF до тго как кончился фаил по сути.
Попрбуй выполни этот листинг и увидиш чт на экран не все символы в заданом диапазоне выведуться, а только те что стоят до 4576.

Прилогаю аналагичный файл который алгаритмоп прчитываеться нормально

Автор: bsa 16.7.2008, 11:31
l2qwe, открой файл в бинарном виде ("r" замени на "rb").

Добавлено через 1 минуту и 31 секунду
Кстати, c_get должен быть типа int, а не char. Так как символ с кодом 255 помещенный в переменную типа char становится равен EOF

Автор: source777 16.7.2008, 11:35
2l2qwe, тебе ж сказали: попробуй f_get=fopen("ws0082.txt","rb");

Автор: l2qwe 16.7.2008, 11:35
Всё отлично
Спасибо ОГРОМНОЕ, 2 дня изврашался как мог над чтением этого файла, а так не пробовал.

Автор: source777 16.7.2008, 11:36
P.S. Блин, bsa меня опередил.. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)