Вход на сайт
EOF
94
NEW 31.03.06 08:36
День добрый!
Возникла проблемка. Считывал файл с русским текстом. В С++ код примерно такой:
FILE *infile;
char c;
infile = fopen ("file.txt" , "rt");
if (infile != NULL)
{
do {
c = fgetc (infile);
...
}
while (c != EOF);
}
fclose (infile);
Проблема в том, что читает файл только до того места, на котором встречает первую букву "я". Получается что чар "я" равен чару "eof". Что делать?
Поставил в конец файла "#", написал условие while (c != '#'); - работает. Но это для меня не оптимальное решение.
Возникла проблемка. Считывал файл с русским текстом. В С++ код примерно такой:
FILE *infile;
char c;
infile = fopen ("file.txt" , "rt");
if (infile != NULL)
{
do {
c = fgetc (infile);
...
}
while (c != EOF);
}
fclose (infile);
Проблема в том, что читает файл только до того места, на котором встречает первую букву "я". Получается что чар "я" равен чару "eof". Что делать?
Поставил в конец файла "#", написал условие while (c != '#'); - работает. Но это для меня не оптимальное решение.
"...вечно молодой, вечно пьяный..."
31.03.06 15:45
Как уже заметили ранее С здесь и не пахнет, поэтому я исхожу из того, что тебе нужен С.
EOF - это просто макро, определяемый зачастую как -1. Ты видимо используешь кодировку в которой 'я' также равен -1, поэтому и получаешь наблюдаемое поведение. Использование binary в данном случае кстати вообще ни от чего не спасет, ибо -1 в твоём файле как была так и останется. Как правильно заметил
Murr, использовать надо feof():
to
Murr
злобен не Билли, злобны собственные руки. Не надо валить на Билли собственное неумение пользоваться языком. Это совершенно стандартное поведение, смотри раздел 7.9 стандарта С90.
EOF - это просто макро, определяемый зачастую как -1. Ты видимо используешь кодировку в которой 'я' также равен -1, поэтому и получаешь наблюдаемое поведение. Использование binary в данном случае кстати вообще ни от чего не спасет, ибо -1 в твоём файле как была так и останется. Как правильно заметил

to

злобен не Билли, злобны собственные руки. Не надо валить на Билли собственное неумение пользоваться языком. Это совершенно стандартное поведение, смотри раздел 7.9 стандарта С90.
NEW 31.03.06 16:14
в ответ scorpi_ 31.03.06 15:45
Использование binary в данном случае кстати вообще ни от чего не спасет
------
Эээ... а кто-то дал гарантию на отсутствие 0х1A в тексте?
злобен не Билли, злобны собственные руки.
-----
В данном случае - злобен именно билли - до него об "текстовых" файлах не слышали и не имели этого дополнительного гемороя...
------
Эээ... а кто-то дал гарантию на отсутствие 0х1A в тексте?

злобен не Билли, злобны собственные руки.
-----
В данном случае - злобен именно билли - до него об "текстовых" файлах не слышали и не имели этого дополнительного гемороя...
