Заменить пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций - C (СИ) (72572)
Формулировка задачи:
Задача 1.21. Напишите программу entab, которая бы заменял пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций и дополнительных пробелов, - так, чтобы заполнить то же пространство.
При запуске, например, на тесте "example" выводом будет
example
*непонятный символ*. Курсор стоит на этой позиции.
аналогично с другими вводами. В чём может быть причина?
#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;
}Решение задачи: «Заменить пустые строки, состоящие из одних пробелов, строками, содержащими минимальное количество табуляций»
textual
Листинг программы
s[j] = c; j++; // здесь ты уже инкрементировал счетчик s[j+1] = '\0'; // а здесь снова. И того у тебя случайный символ из памяти.