Упражнение 1.18. Напишите программу для удаления лишних пробелов и табуляций в хвосте каждой поступающей строки входного потока, которая бы также удаляла полностью пустые строки.
/* программа для удаления лишних пробелов и табуляций */
#include "stdafx.h"
#define MAXLINE 1000 /* максимальная длина строки в потоке */
int getline(char line[], int maxline);
int main()
{
int len; /* длина текущей строки */
int i;
char line[MAXLINE]; /* текущая введенная строка */
while ((len = getline(line, MAXLINE)) > 0) {
--len; /* "выкидываем" нулевой символ '\0' */
/* если на конце строки есть пробел или табуляция,
"обрезаем" строку пока не встретим любой другой символ */
for (i = len - 1; i > 0; --i) {
if (line[i] == '\t' || line[i] == ' ')
--len;
else i = 0;
}
/* если строка непустая, выводим её */
if (len != 0) {
for (i = 0; i < len; ++i)
printf("%c", line[i]);
printf("\n");
}
}
return 0;
}
/* getline: считывает строку в s, возвращает ее длину */
int getline (char s[], int lim)
{
int c, i;
for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '\0';
return i;
}
Для наглядности, вместо пробелов и табуляций программа удаляет 0 и 1 в конце строки. Выглядит это вот так:
|