Заменить пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций - C (СИ) (72572)

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

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

Задача 1.21. Напишите программу entab, которая бы заменял пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций и дополнительных пробелов, - так, чтобы заполнить то же пространство.
#include <stdio.h>
 
int main () {
    int c,numsp,nospace,i,j;
    char s[100];
    nospace = 1;
    numsp = 0;
    j = 0;
    while ((c = getchar()) != EOF) {
        s[j] = c;
        j++;
        if (c != ' ' && c != '\n')
            nospace = 0;
        if (c == ' ') numsp++;
        if (c == '\n') {
            if (nospace == 1) {
                for (i = 1; i <= (numsp / 3); i++)
                    putchar ('\t');
                for (i = 1; i <= (numsp % 3); i++)
                    putchar (' ');
                putchar ('\n');
            }
            if (nospace == 0) {
                s[j+1] = '\0';
                printf ("%s",s);
            }
            nospace = 1;
            numsp = 0;
            j = 0;
        }
    }
    return 0;
}
При запуске, например, на тесте "example" выводом будет example *непонятный символ*. Курсор стоит на этой позиции. аналогично с другими вводами. В чём может быть причина?

Решение задачи: «Заменить пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций»

textual
Листинг программы
s[j] = c;
j++; // здесь ты уже инкрементировал счетчик
 
 s[j+1] = '\0'; // а здесь снова. И того у тебя случайный символ из памяти.

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


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

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

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