Задачи из учебника Кернигана и Ритчи - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Недавно приобрел учебник по программированию на языке С авторов Кернигана и Ритчи. Там есть много интересных задач. Предлагаю в этой теме приводить свои решения и оптимизировать уже имеющиеся. Вот упражнение 1.20. Работает корректно, но я так думаю вариант не самый оптимальный =) Написать программу detab, которая бы заменяла символы табуляции во входном потоке соответствующим количеством пробелов до следующей границы табуляции. Предположим что табуляция имеет фиксированную ширину n столбцов. Следует ли сделать n переменной или символическим параметром?
#include <stdio.h>
#define TABMAX 8  //ширина табуляции
 
void detab(int tabSize);
 
int main()
{
    detab(TABMAX);
 
    return 0;
}
 
void detab(int tabSize)
{
    int ch, pos;
 
    pos = 0;
    while((ch = getchar()) != EOF) {
        if(ch == '\n') {
            putchar(ch);
            ch = getchar();
            pos = 0;
        }
        if(ch == '\t')
            do {
                putchar(' ');
                ++pos;
            } while(pos % tabSize);
        else {
            putchar(ch);
            ++pos;
        }
    }
}
Хотелось бы послушать аргументированную критику.

Решение задачи: «Задачи из учебника Кернигана и Ритчи»

textual
Листинг программы
char *detab(char *String, int tabSize)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы