本例来源于《C程序设计语言》1.9节—字符数组。
编写的基本框架是:
while (还有未处理的行)
if (该行比已处理的最长行还要长)
保存该行
保存该行的长度
打印最长的行
代码如下:
#include <stdio.h>
#define MAXLINE 1000 // 允许的输入行的最大长度
int getline(char line[], int maxline);
void copy(char to[], char from[]);
/* 打印最长的输入行 */
int main(void)
{
int len; // 当前行的长度
int max; // 目前为止发现的最长行的长度
char line[MAXLINE]; // 当前的输入行
char longest[MAXLINE]; // 用于保存最长的行
max = 0;
while ((len = getline(line, MAXLINE)) > 0) // 如果当前行的长度大于0
{
if (len > max)
{
max = len;
copy(longest, line);
}
//if (max > 0)
//{
// printf("%s", longest);
//}
}
printf("%s", longest);
system("pause");
return 0;
}
/* getline函数:将一行读入到line中,并返回其长度 */
int getline(char line[], int maxline)
{
int c;
int i;
for (i = 0; i < maxline - 1 && (c = getchar()) != EOF && c != '\n'; ++i)
{
line[i] = c;
}
if (c == '\n')
{
line[i] = c;
++i;
}
line[i] = '\0';
return i;
}
/* copy函数:将from复制到to,这里假定to足够大 */
void copy(char to[], char from[])
{
int i = 0;
while ((to[i] = from[i]) != '\0')
{
++i;
}
}