Мне нужна помощь в понимании того, что задание 5-12 требуется в книге по языку программирования C - PullRequest
4 голосов
/ 16 апреля 2010

K&R C Programming Language: pg. 105

Расширить entab и detab, чтобы принять сокращение

entab -m +n

означает, что табуляция останавливается через каждые n столбцы, начиная с столбца m.

entab заменяет несколько пробелов символом табуляции, а detab делает обратное. Вопрос, который у меня есть, касается табуляции и entab. Я полагаю, что для detab довольно легко определить количество пробелов, необходимое для достижения следующей остановки табуляции, так что не стоит беспокоиться. С entab замена пробелов на табуляцию немного сложнее, так как я точно не могу знать, насколько большой символ табуляции идет до собственной табуляции (если нет способа узнать наверняка).

Думаю ли я об этом как следует?

Ответы [ 2 ]

1 голос
/ 16 апреля 2010

entab должен работать, когда пробелы достигают табуляции - тогда этот пробел можно заменить символом табуляции.

Например, следующая строка текста (здесь для справки указатель):

           1   1   2   2   2
1      8   2   6   0   4   8
-------+---+---+---+---+---+
          this     is a line

должно выглядеть следующим образом после entab -8 +4:

\t  this \tis a line

(обратите внимание, что может быть разумно, если после этой строки в строке следуют два символа табуляции, поскольку либо пробел, либо табуляция достигнут этой конкретной табуляции).

1 голос
/ 16 апреля 2010

"табуляция останавливается через каждые n столбцов, начиная с колонки m", говорит вам, насколько велика каждая остановка табуляции, по крайней мере, по моим данным: это просто n Только первая остановка табуляции отличается; это один м .

...