K& R2,练习1-16;什么是作业?

时间:2014-04-15 20:08:17

标签: c kernighan-and-ritchie

我正在阅读Kernighan和Ritchie的 C编程语言,第二版,我在练习1-16中理解作业的性质时遇到了问题。我已多次阅读但无法弄清楚他们对我的要求是什么;请原谅我,但英语不是我的第一语言。

练习说明是:

  

修改最长线程序的主程序,以便它   正确打印任意长输入行的长度和同样多   尽可能的文本。

这是否意味着程序不再受MAXLINE字符串限制的限制,因为它涉及最长行的长度,或者它希望您单独打印每行的长度?如果它是后者,它是否要求您在输入每条线及其长度或仅长度后打印?

我提出的两个选项是完全不同的,所以我真的很感激一些建议。

1 个答案:

答案 0 :(得分:1)

  1. 这是否意味着程序不再受MAXLINE字符串限制的约束?
  2. 不,它没有。在本书的这一点上,你不应该知道如何处理和存储任意长度的行。第1章是对C的一个非常肤浅的介绍,不期望你重新设计整个代码。

    考虑到这一点:练习要求您尽可能多地打印该行,即如果该行长于MAXLINE个字符,则只需打印第一个MAXLINE您还应该打印原始行的长度。换句话说,你尽可能多地存储MAXLINE个字符,但是为了计算,你只能在该限制之后阅读。

    要做到这一点,必须更新getline()函数以便将字符计数到行尾,即使它已达到缓冲区的限制,在这种情况下它会计数,但它 显然不会将文本写入缓冲区。