题目:
编写一个程序,打印长度大于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的同名函数相同。