C程序设计语言(第二版):练习1-17

题目:

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

上一篇:host碰撞漏洞


下一篇:Docker Desktop 如何运行第一个 Docker 项目