Программа должна распечатать все входные строки, длина которых превышает MINLINE
5 и короче MAXLINE
10. Ссылка. Книга упражнений K & R 1.17
#include <stdio.h>
#define MAXLINE 10
#define MINLINE 5
int getlines(char lines[], int maxline);
int main()
{
int length;
char lines[MAXLINE];
while ((length = getlines(lines, MAXLINE)) > 0)
{
if (length > MINLINE)
printf("%s", lines);
}
return 0;
}
int getlines(char lines[], int maxline)
{
int i, c;
for (i = 0; i < maxline - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
{
lines[i] = c;
}
if (c == '\n')
{
lines[i] = c;
++i;
}
lines[i] = '\0';
return i;
}
Желаемый результат должен выглядеть следующим образом: -
Hello\n
Hello\n
hi\n
excuseMe\n
excuseMe\n
longLineNotToBePrinted\n
done
done
, но неожиданно программа печатает строки, которые намного длиннее MAXLINE
, а иногда печатает те, которые пропускают некоторые завершающие символы.