Упражнение 1-21 C Язык программирования Керниган
Пожалуйста, объясните последнюю строку.
#include <stdio.h>
#define TABINC 8
/* replace strings of blanks with tabs and blanks */
int main()
{
int c, nb, nt, pos;
nb = 0; /* number of blanks necessary */
nt = 0; /* number of tabs necessary */
for (pos = 1; (c = getchar()) != EOF; ++pos)
if (c == ' ') {
if (pos % TABINC != 0)
++nb; /* increment # of blanks */
else {
nb = 0; /* reset # of blanks */
++nt; /* one more tab */
}
} else {
for ( ; nt > 0 ; --nt)
putchar('\t') /* output tab(s) */
if (c == '\t') /* forget the blank(s) */
nb = 0;
else
for ( ; nb > 0; --nb)
putchar(' ');
putchar(c);
if (c == '\n')
pos = 0;
**else if (c == '\t')
pos = pos + (TABINC - (pos-1) % TABINC) - 1;
}
}**
У меня трудности с интерпретацией финальной строки. , , Не могли бы вы объяснить, как расшифровать арифметику c?
Что это значит? иначе если (c == '\ t') pos = pos + (TABIN C - (pos-1)% TABIN C) - 1;