![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Xmiler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
Пишу прогу для сдачи в инст-win32 application.
Обнаружил, что если ставишь букву "я"(код 255) в файле с кодировкой win, то текст после нее урезается (если использивать структу (c=getc(fp1))!=EOF ). Как поступить в таком случае? ![]() |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
В поиск. Обсуждалось 1482 раза.
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Потому что конец файла не определяется буквой.
Нужно использовать функцию feof(FILE*). |
|||
|
||||
codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 1 Всего: 39 |
используй вместо
char c; int c; |
|||
|
||||
Xmiler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
mr.Anderson, прошу прощения.
JackYF, спасибо! codelord, где именно? я использую putc далее.. А нафига функция getc(fp) возвращет EOF после конца файла?? Подскажите пожалуйста как этого избежать. Пишу программу шифрования файла - каждому символу сопоставлю по некоторому правилу другой символ. А этот EOF все порптит ![]() Заранее большое спасибо! З.Ы. Найти похожуу тему старался |
|||
|
||||
phprus |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 129 Регистрация: 22.8.2006 Репутация: 1 Всего: 3 |
Xmiler
Функция getc возвращает int, соответственно переменная "c" должна быть типа int. Тогда файл не будет обрезаться на букве "я" при сравнивании "с" с EOF. putc ожидает символ в виде типа int, так что если переменная "c" будет иметь тип int, то ничего страшного не случится. |
|||
|
||||
Xmiler |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
codelord,
phprus, Спасибо!! Не понял в чем фокус, но все работает! ![]() Если не трудно, объясните почему(средства отладки к сожалению не знаю): условие unsigned int c; while ((c=getc(fp1))!=EOF) работает хотя EOF=-1 в stdio.h Ведь у меня беззнаковое, да и все возможных 256(дес.) значений заняты ASCII таблицей. Заранее спасибо! |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Всё правильно работает. Что возвращает getc?
1. EOF если дошли до конца. 2. Код символа иначе, но (!) типом int. Если мы имеем char c, то при c = EOF приведёт к тому, что в c запишется 255 (бинарная интерпретация -1 для беззнакового однобайтового типа). |
|||
|
||||
BigHeart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
гляньте, пожалуйста, такой код. тут такие проблемы: CharToOem не пашет при включённом юникоде, и я никак не могу заставить закончить считывание строки, когда достигнут конец файла
|
|||
|
||||
Rockie |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
BigHeart, а что программа делает? какие входные данные и что нужно получить в итоге?
Добавлено @ 15:42
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
BigHeart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
нужно просто прочесть из файла английсие слова и их русский перевод
Добавлено @ 15:57
это тоже не помогает |
|||
|
||||
codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 1 Всего: 39 |
ошибки считывания файла точно нет?
"D:\\AAA\\\english.txt" |
|||
|
||||
seacat79 |
|
||||||||
![]() Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 27.2.2007 Где: Украина, Одесса Репутация: 1 Всего: 1 |
Не совсем понятно, как он у тебя делает, то, что ты хочешь сделать ![]()
Данную операцию зачем-то делаем 10000 раз ![]()
надо так
|
||||||||
|
|||||||||
BigHeart |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 17.3.2007 Репутация: нет Всего: нет |
спасибачки!!!
![]() Добавлено @ 14:53 я только пол-года С++ учу. Ещё на методе проб и ошибок. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |