| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 меня опередил.. |