Автор Alexandr Ыых задал вопрос в разделе Другие языки и технологии
Почему русская буква "я" (маленькая, кодировка-1251,Windows XP) воспринимается как EOF функцией fgetc()? и получил лучший ответ
Ответ от Алекс Красс[гуру]
Нельзя проверять окончание файла функцией fgetc, это ошибка.
Для проверки окончания файла есть специальная функция feof, ей и надо пользоваться.
Алекс Красс
Просветленный
(39781)
Таблица символов ANCII не была рассчитана на другие языки, они были добавлены позже и вызывают такую вот проблему. Как написал ЗЛО, в этом случае буква "Я" имеет код, который совпадает с EOF и заменяет его. Файл является текстовым и открывается как текстовый, но вызывает проблемы. Вообще с кодировками всегда сложности.
Функция getc, в отличие от fgetc, может быть реализован, как макроподстановка. В данном случае макроподстановка может создать ситуацию, когда выполняются избыточные операции из-за указателя на поток *FILE. Поэтому лучше использовать fgetc.
Вообще макросы иногда является более предпочтительными, но не в данном случае.
Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только значок ударения) ; она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского, македонского и болгарского.
Имеет два недостатка:
строчная буква «я» имеет код 0xFF (255 в десятичной системе) . Она является «виновницей» ряда неожиданных проблем в программах без поддержки чистого 8-го бита, а также (гораздо более частый случай) использующих этот код как служебный (в CP437 он обозначает «неразрывный пробел» , в Windows-1252 — ÿ, оба варианта практически не используются; число же -1, в дополнительном коде длиной 8 бит представляющееся числом 255, часто используется в программировании как специальное значение, например, индикатор конца файла EOF часто представляется значением -1).
отсутствуют символы псевдографики, имеющиеся в CP866 и KOI8 (хотя для самих Windows, для которых она предназначена, в них не было нужды, это делало несовместимость двух использовавшихся в них кодировок заметнее).
Хороший-ли кпк Fujitsu-Siemens Pocket LOOX C550?
Характеристики карманного компьютера Fujitsu-Siemens Pocket LOOX C550(рус)
ТИП: MS Windows
подробнее...
как войти в Bios на ноутбуке Fujitsu
При запуске системы многократно жми F2 до входа в биос . Я слышал что на Fujitsu для Win8, надо
подробнее...
Кто производитель ноутов fujitsu ( страна)
Фирма Япония, а производят скорее всего Китай
подробнее...
Чем PHP как FastCGI отличается от обычного php?
Есть PHP как модуль к апачу, как CGI, как Fast CGI. Как модуль апача выполняется быстрее, но и
подробнее...
Кто знает что такое сопроцессор и где взять для него драйвера на ноутбук. Fujitsu Siemens AMD Turion64 x2 Amilo 2528
Нужен драйвер на чипсет для процессоров АМД, найти можно на сайте
подробнее...
Подскажите пожалуйста что делать дальше? Не получается заказать с Fasttech !
ПОПРОБУЙТЕ ПОСОВЕТОВАТЬСЯ СО ЗНАТОКАМИ...
FastTech.com | Форум
подробнее...
ГДЕ скачать драйвер видео для ноутбука fujitsu siemens esprimo mobile v5535 подскажите плиз
Siemens&m=ESPRIMO Mobile V5535&id=4737&l=ru
подробнее...
где и какие необходимо скачать драйвера для fujitsu siemens amilo li 1818?
Есть в интернете одно место, где есть , в том числе и бесплатные, для самых разных операционных
подробнее...
Друзья, помогите пожалуйста найти драйверы для ноута fujitsu siemens amilo d 1845
Драйвера здесь.. .
Зайди на этот сайт и проверь компьютер c помощью их фирменной утилиты . Она
подробнее...
Как по вашему ноутбук Fujitsu Siemens ESPRIMO Mobile V5535 сойдёт для учёбы? какие у него возможности?
Для учёбы и работы вполне подойдёт.
Подробный обзор - gigamark.
подробнее...