Я преподаю себе C и работать через K & R. Я делаю упражнения 1-21:понимание entab пример кода в к & г
Написать entab Программа, которая заменяет строки заготовок минимальным числом вкладок и пробелов для достижения одинакового интервала. Используйте те же табуляции, что и для detab.
У меня возникли проблемы с этим упражнением, поэтому я нашел решение в Интернете, но я этого не понимаю. Может кто-нибудь объяснить, как работает этот код?
#include<stdio.h>
#define TABINC 8
int main(void)
{
int nb,nt,pos,c;
nb = 0;
nt = 0;
for(pos=1;(c=getchar())!=EOF;++pos)
if(c == ' ')
{
if((pos % TABINC) != 0)
++nb;
else
{
nb = 0;
++nt;
}
}
else
{
for(; nt > 0 ; --nt)
putchar('\t');
if(c == '\t')
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;
}
return 0;
}
Я не понимаю, почему вы хотите отслеживать позицию. Похоже, что все вещи пробелы; правильно? – ChiefTwoPencils
Я думал, код верный? – user1527227
Что именно не работает, как вы ожидали? Вы вкладываете много слов, но не упоминаете, в чем проблема. –