Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ф-ции fopen, fgetc, Не работал с этими ф-циями 
V
    Опции темы
AndreySol
Дата 28.6.2006, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



Не работал с этими ф-циями, обычно пользую CFile, а сейчес вот понадобилось.
Что означает нижеприведенный код ?
Код

FILE *fp;
int curch;
int flag1=0;
fp = fopen(strFileName, "rb");// с этим все вроде понятно
if(fp != NULL)
{
    do
    {
        curch = fgetc(fp);// а вот здесь и ниже - не очень
        if(curch == 255)
        {
            curch = fgetc(fp);
            if(tolower(curch/16) == 15)
                flag1 = 1;
        }
    }
    while(flag1 == 0);
}
 
PM MAIL   Вверх
Mad
Дата 28.6.2006, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Эксперт
Сообщений: 656
Регистрация: 18.10.2004
Где: Одесса

Репутация: 2
Всего: 19



AndreySol, выбирает из файла побайтноб когда встречает ещ проверяет
Цитата(AndreySol @  28.6.2006,  07:32 Найти цитируемый пост)
           if(tolower(curch/16) == 15)
 и если да, то прекращает выборку
 


--------------------
user posted image
PM MAIL   Вверх
SergeCpp
Дата 28.6.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 5
Всего: 124



неплохо бы поставить проверку на конец файла...

while( flag1 == 0 && feof( fp ) == 0 ) // или while( !( flag1 | feof( fp ) ) )
{
    //... прежний код
}

проверяя после цикла, нашлось-ли искомое в файле или нет 

Это сообщение отредактировал(а) SergeCpp - 28.6.2006, 09:58
PM MAIL WWW ICQ   Вверх
AndreySol
Дата 28.6.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



Понял, спасибо.
Еще вопросик: что за символ "255", и где можно найти расшифровку остальных символов ? 
PM MAIL   Вверх
SergeCpp
Дата 29.6.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


Профиль
Группа: Участник
Сообщений: 955
Регистрация: 8.8.2005
Где: At Home

Репутация: 5
Всего: 124



255 — это код символа, его интерпретация зависит от программы.

В кодовой странице 1251 ему соответствует маленькая русская буква 'я'.

Скорее всего, тут дело не в символе как таковом, а в интерпретации прочитанного байта программой.

Разберитесь с программой или поместите её описание сюда.  

Это сообщение отредактировал(а) SergeCpp - 29.6.2006, 10:37
PM MAIL WWW ICQ   Вверх
Dart
Дата 29.6.2006, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 26.6.2006
Где: Саратов, РФ

Репутация: 2
Всего: 2



Расшифровка символов зависит от кодовой страницы.
Служебные символы, типа CR, LF, FF и т.д. везде, насколько я знаю, универсальные.
Но как их обрабатывает конкретное приложение - зависит от самого приложения.
Например, в консоли LF переводит строку, но не возвращает курсор в начало строки, а в виндах - возвращает.
В общем, поищи в документации - там это точно будет smile 
PS Символ 255 - не служебный, служебные - от 0 до 31 

Это сообщение отредактировал(а) Dart - 29.6.2006, 09:48
--------------------
ЦитатаЛюблю смотреть, как другие работают
 Дж. К. ДжеромСайт: www.ecosigma.ruПочта: [email protected] 
PM MAIL WWW ICQ   Вверх
AndreySol
Дата 30.6.2006, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



Всем спасибо, все понятно. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0881 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.