//test_7
//程序读入一组文本行,并把最长的文本行打印出来
//功能拆分,利用各个函数实现
/* while(还有未处理的行)
if(该行比已处理的最长行还要长)
保存该行为最长行
保存该行的长度
打印最长行 */
#include <stdio.h>
#define MAXLINE 1000 //限制每行可输入的字符数量上限
int getline(char s[], int lim);
void copy(char from[], char to[]);
int main()
{
int len, max;
char line[MAXLINE];
char longest[MAXLINE];
while((len=getline(line, MAXLINE))>0) { //实参是数组名
if(len>max) {
max=len;
copy(line, longest);
}
}
if(max>0)
printf("%s",longest); //以%s打印字符串
return 0;
}
//获取一行文本行,并保存在s[]中
int getline(char s[], int lim) //形参是数组
{
char c;
int 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'; //在字符数组末尾添加'\0'(空字符),标记字符串的结束
return i; //返回文本行长度
}
- printf函数规定,以%s格式输出的字符串,必须是以'\0'结束的。