Login
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 10:07
in Antwort ойМОЛОДой 31.03.06 08:36
NEW 31.03.06 10:21
in Antwort Murr 31.03.06 10:07
Спасибо, учту.
А что, если я инициализирую "с" не как чар, а как интеджер? Кажися, работает...
А что, если я инициализирую "с" не как чар, а как интеджер? Кажися, работает...
[син]"...вечно молодой, вечно пьяный..."[/син]
NEW 31.03.06 10:26
in Antwort ойМОЛОДой 31.03.06 08:36
А можно спросить, где здесь c++?
ifstream input....
while(input.get(char))
....
Не подойдет?
---
Хе. "Чеpствый"... Видели бы Вы, что я с котятами делаю.(2:5020/400)
ifstream input....
while(input.get(char))
....
Не подойдет?
---
Хе. "Чеpствый"... Видели бы Вы, что я с котятами делаю.(2:5020/400)
NEW 31.03.06 10:42
in Antwort ойМОЛОДой 31.03.06 10:21
Эээ... как integer... тут тебя ждет много сюрпризов с расширением знака... так что unsigned не забывай...
NEW 31.03.06 10:44
in Antwort ойМОЛОДой 31.03.06 10:21
Да, не "инициализирую", а "определяю" или "описываю".
Инициализация - присвоение начального значения.
Инициализация - присвоение начального значения.
NEW 31.03.06 15:45
in Antwort ойМОЛОДой 31.03.06 08:36, Zuletzt geändert 31.03.06 16:22 (scorpi_)
Как уже заметили ранее С здесь и не пахнет, поэтому я исхожу из того, что тебе нужен С.
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
in Antwort scorpi_ 31.03.06 15:45
Использование binary в данном случае кстати вообще ни от чего не спасет
------
Эээ... а кто-то дал гарантию на отсутствие 0х1A в тексте?
злобен не Билли, злобны собственные руки.
-----
В данном случае - злобен именно билли - до него об "текстовых" файлах не слышали и не имели этого дополнительного гемороя...
------
Эээ... а кто-то дал гарантию на отсутствие 0х1A в тексте?

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