题目:
编写一个程序,打印长度大于80个字符的所有输入行
自我解答:
基于1-16中的代码,稍作修改,判断条件改为len > WANTLEN #define WANTLINE 80
由于输入中没有大于80的行,所以输出为空。打印输出大于30的行,输出如下:
while((c = getchar()) != EOF && len < MAXLINE && c != '\n') void copy(char to[], char from[]) while((to[i] = from[i]) != '\0') char line[MAXLINE] = {'\0'}; char longest[MAXLINE] = {'\0'}; while((len = getline(line)) > 0) copy(longest, line); printf("%s", longest);
参考答案:
#include <stdio.h> #define MAXLINE 1000 /* maximum input line size */ #define LONGLINE 80 int getline(char line[], int maxline); /* print lines longer than LONGLINE */ int main() { int len; /* current line length */ char line[MAXLINE]; /* current input line */ while((len = getline(line, MAXLINE)) > 0) { if(len > LONGLINE) printf("%s", line); } return 0; }
这个程序调用函数getline来读取输入行。函数getline将返回输入行的长度和尽可能多的内容。如果输入行的长度大于80个字符(LONGLINE),我们的程序就将把它打印出来;否则,不进行任何操作。这一过程将一直循环到函数getline返回一个等于零的输入行长度为止。
函数getline与练习1-16的同名函数相同。