Вход на сайт
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 != '#'); - работает. Но это для меня не оптимальное решение.
"...вечно молодой, вечно пьяный..."
NEW 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.
31.03.06 16:14
в ответ scorpi_ 31.03.06 15:45
Использование binary в данном случае кстати вообще ни от чего не спасет
------
Эээ... а кто-то дал гарантию на отсутствие 0х1A в тексте?
злобен не Билли, злобны собственные руки.
-----
В данном случае - злобен именно билли - до него об "текстовых" файлах не слышали и не имели этого дополнительного гемороя...
------
Эээ... а кто-то дал гарантию на отсутствие 0х1A в тексте?

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