关于the c programming language 里的一个习题(第一章)

jwbecalm 2006-03-16 11:21:28
/*
** 编写一个程序,该程序读入一组文本行,并把最长的文本行打印出来
基本框架:
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?怎么输入了?
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwbecalm 2006-03-17
  • 打赏
  • 举报
回复
谢谢了,直接按ctrl+Z就行了,不用再输入EOF
duduhaha 2006-03-16
  • 打赏
  • 举报
回复
ctrl+z
yzx1983 2006-03-16
  • 打赏
  • 举报
回复
不同的操作系统有不同的定义
linux似乎是ctrl+d
iamcaicainiao 2006-03-16
  • 打赏
  • 举报
回复
就是楼上说的。按住Ctrl,输入z
然后再放下Ctrl键,输入 EOF 即可。
《C程序设计语言》(第2版新版)讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。《C程序设计语言》(第2版新版)原著即为C语言的设计者之一Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。人们熟知的“hello,world”程序就是由本书首次引入的,现在,这一程序已经成为所有程序设计语言入门的第一课。 内容提要 -------------------------------------------------------------------------------- 《C程序设计语言》(第2版新版)是由C语言的设计者Brian W.Kernighan和Dennis M.Ritchie编写的一部介绍标准C语言及其程序设计方法的权威性经典著作。全面、系统地讲述了C语言的各个特性及程序设计的基本方法,包括基本概念,类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、UNIX系统接口、标准库等内容。 目录    出版者的话    专家指导委员会    中文版序    译者序    校译者简介    序    第1版序    引言    第1章 导言    1.1 入门    1.2 变量与算术表态式    1.3 for语句    1.4 符号常量    1.5 字符输入/输出    1.6 数组    1.7 函数    1.8 参数——传值调用    1.9 字符数组    1.10 外部变量与作用域    第2章 类型、运算符与表达式    2.1 变量名    2.2 数据类型及长度    2.3 常量    2.4 声明    2.5 算术运算符    2.6 关系运算符与逻辑运算符    2.7 类型转换    2.8 自增运算符与自减运算符    2.9 按位运算符    2.10 赋值运算符与表达式    2.11 条件表达式    2.12 运算符优先级与求值次序    第3章 控制流    3.1 语句与程序块    3.2 if-else语句    3.3 else-if语句    3.4 switch语句    3.5 whil循环与for特环    3.6 do-while循环    3.7 break语句与continue语句    3.8 goto语句与标号    第4章 涵数与程序结构    第5章 指针与数组    第6章 结构    第7章 输入与输出    第8章 UNIX系统接口    附录A 参考手册    附录B 标准库    附录C 变更小结    索引 作者介绍 -------------------------------------------------------------------------------- Brian W.Kernighan贝尔实验室计算科学研究中心高级研究人员,著名的计算机科学家。他参加了UNIX系统、C语言、AWK语言和许多其他系统的开发,同时出版了许多在计算机领域具有影响的著作,如《The C Proguamming Language》、《The Elementsof Programming Style》等。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧