Я создаю абсурдно простую программу на C, чтобы побеседовать с getchar()
. Программа распечатает то, что вы вводили, пока не нажмете enter, и это гарантирует, что ваши линии не превышают 80 символов. Чтобы сделать это, я продолжаю подсчитывать, сколько символов было введено. После того, как количество символов достигнет 70, следующее обнаруженное пространство вызовет разрыв строки. Если между 70-80 не встречается пробел, разрыв строки будет происходить независимо. Я понимаю, что это супер наивная реализация и может быть оптимизирована влево и вправо, но помните, я просто бездельничал:Проверьте, не является ли символ пробелом
while ((c = getchar()) != '\n') {
if (lineLengthCount < 70) {
putchar(c);
lineLengthCount++;
}
else if (lineLengthCount < 80 && (c == ' ')) {
printf("%c\n", c);
lineLengthCount = 0;
}
else {
printf("%c\n", c);
lineLengthCount = 0;
}
}
Проблема заключается в c == ' '
условно не кажется, на самом деле проверка пространства , Я получаю такой вывод:
fitter happier more productive comfortable not drinking too much regula
r exercise at the gym three days a week getting on better with your ass
ociate employee contemporaries at ease eating well no microwaved dinner
, где я надеялся, что линии будут усечены, когда пространство встречались. Вместо этого, независимо от того, какой символ вводится после строки 70, создается новая строка. я что-то упускаю? Действительно ли это означает любой персонаж?
Оба последних блока, похоже, делают то же самое. – cnicutar
Даже если условие в вашем else-if ложно, ваше else выполнит и пометит разрыв строки. – Metabble
И если 'LineLengthCount'' 70' ...? вы сбросите его на '0'. –