• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Разложить текст

  • Автор темы nast9
  • Дата начала
N

nast9

Здравствуйте, можете помочь разложить текст чтобы стал более понятным.
Есть кусок программы:
while(c=getc(f)!=EOF)
{
++i
if (i==255)
{
}
}
Не могу понять как разложить цикл, как мне говорили в нем можно опустить getc и тогда while по идее у нас меняется на for.
 
N

nast9

Надо опустить getc вниз то есть разложить на два действия.
 
L

lazybiz

Трудно понять что именно тебе нужно... На ум приходит следующий код:
C++:
do {
c[i] = getc( f );
i++;
if ( i == 255 ) {
...
}
} while ( c[i] != EOF );
 
N

nast9

Спасибо, просто говорили что while можно заменить for и расписать одну строку на две, при этом опустив getc вниз.
 
L

lazybiz

Тогда только так:
C++:
for (; c[i] != EOF; ++i ) {
c[i] = getc( f );
if ( i == 255 ) { ... }
}
Но проблема заключается в том, что изначально c будет иметь неопределенное значение. Соответственно код не будет отражать то что ты написал изначально.

Добавлено: Вот так будет работать как в твоем варианте, но я считаю этот вариант извращенным...
C++:
for (;;) {
if ( (c[i] = getc( f )) == EOF ) break;
++i;
if ( i == 255 ) { ... }
}
 
L

lazybiz

нет. тут нет синтаксических ошибок
 
A

a0z

В одну строку? Как-то так, не проверял.

C++:
for (c[0] = getc(f),i=0;c[i] != EOF;c[++i]=getc(f))
{
if ( i == 255 ) { ... }
}
 
N

nast9

Сегодня сказали что,
C++:
for (; c[i] != EOF; ++i ) {
c[i] = getc( f );
if ( i == 255 ) { ... }
}
слегка не правильный вариант, то что c=getc(f) нельзя так сравнивать, т.к считываться в таком варианте будет не весь файл а только его половина. Сказали что надо использовать int.
 
L

lazybiz

Так у тебя изначально i-й элемент будет неопределенным. Этот вариант с точки зрения логики не правильный.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!