Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разложить текст 
:(
    Опции темы
4amba
Дата 23.5.2011, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, можете помочь разложить текст чтобы стал более понятным.
Есть кусок программы:
while(c[i]=getc(f)!=EOF)
{
++i
if (i==255)
{
}
}
Не могу понять как разложить цикл, как мне говорили в нем можно опустить getc и тогда while по идее у нас меняется на for.
PM MAIL   Вверх
triclosan
Дата 23.5.2011, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



с позиций дзен while круче чем for
PM MAIL   Вверх
volatile
Дата 24.5.2011, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



for (i=0; i<10; ++i)
{
   ...
}

равнозначно

i=0;
while (i<10)
{
   ...
   ++i;
}

компилятор в обоих случаях создаст идентичный код 1 в 1.
Это просто некоторое удобство для программиста. В принципе если бы не было for, то можно было бы обойтись только while.
И наоборот.

зы: а то что вы написали, вообще смысла не имеет.

PM MAIL   Вверх
bsa
Дата 24.5.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(4amba @  23.5.2011,  19:20 Найти цитируемый пост)
c[i]=getc(f)!=EOF
данный код присваивает c[i] результат сравнения полученного символа с EOF. А так как при не пустом вводе символ не будет EOF, то цикл завершится сразу.
В следующий раз рекомендую использовать скобки.

PM   Вверх
borisbn
Дата 24.5.2011, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



Цитата(bsa @  24.5.2011,  13:58 Найти цитируемый пост)
А так как при не пустом вводе символ не будет EOF, то цикл завершится сразу.

c[i] в этом случае будет равно true или 1, и цикл не завершится, а будет крутиться вечно  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
bsa
Дата 24.5.2011, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



borisbn, точно. заработался.
PM   Вверх
4amba
Дата 24.5.2011, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



а можно как нибудь изменить c[i]=getc(f) чтоб использовать int , т.к при таком выражении то считывается половина файла а не весь.
PM MAIL   Вверх
bsa
Дата 24.5.2011, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



4amba
Код
for(;; ++i) {
   int code = getc(f);
   if (code == EOF)
      break;
   c[i] = (char)code;
}

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




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


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

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