练习1-16 修改打印最长文本行的程序的主程序main,使之可以打印任意长度的输入行的长度,并尽可能多的打印文本。
解析:题目要求只更改main,并要求可以打印任意长度输入行的长度,不太理解如何实现【任意长度】,存储不会溢出吗?此处只实现了打印输入长度和内容,即增加第19行。
#include <stdio.h>
#define MAXLINE 1000
int getline(char s[], int lim);
void copy(char to[], char from[]);
int main(int argc, char *argv[]) {
(void)argc;
(void)argv;
int len;
int max;
char line[MAXLINE];
char longest[MAXLINE];
max = 0;
while ((len = getline(line, MAXLINE)) > 0) {
printf("[%d]%s", len, line); // add
if (len > max) {
max = len;
copy(longest, line);
}
}
if (max > 0) {
printf("maxline:\n%s", longest);
}
return 0;
}
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;
}
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0'){
i++;
}
}
运行结果: