关于the c programming language 里的一个习题(第一章)
/*
** 编写一个程序,该程序读入一组文本行,并把最长的文本行打印出来
基本框架:
while(还有未处理的行)
if(该行比已处理的最长行还要长)
保存该行
保存该行的长度
打印最长的行
*/
#include <stdio.h>
#define MAXLINE 1000 /*允许的输入行的最大长度*/
int getline(char line[], int maxline);
void copy(char to[], char from[]);
/*打印最长的输入行*/
main(){
int len; /*当前行长度*/
int max; /*目前为止发现的最长行的长度*/
char line[MAXLINE]; /*当前的输入行*/
char longest[MAXLINE]; /*用于保存最长的行*/
max = 0;
while((len = getline(line,MAXLINE)) >0 ){
if(len > max){
max = len;
copy(longest,line);
}
}
if(max >0){ /*存在这样的行*/
printf("%s",longest);
}
system("PAUSE");
return 0;
}
/* getline函数:将一行读入到s中并返回其长度*/
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;
}
/* copy函数:将from复制到to;这里假定to足够大*/
void copy(char to[], char from[]){
int i = 0;
while((to[i] = from[i]) != '\0'){
++i;
}
}
//--------------------------------------------------------------------------
程序运行后,由于一直到不了EOF,程序没法结束,也就打印不出最长的那行。
是不是可以在终端显示输入一个EOF?怎么输入了?