我正在阅读Kernighan和Ritchie的 C编程语言,第二版,我在练习1-16中理解作业的性质时遇到了问题。我已多次阅读但无法弄清楚他们对我的要求是什么;请原谅我,但英语不是我的第一语言。
练习说明是:
修改最长线程序的主程序,以便它 正确打印任意长输入行的长度和同样多 尽可能的文本。
这是否意味着程序不再受MAXLINE
字符串限制的限制,因为它涉及最长行的长度,或者它希望您单独打印每行的长度?如果它是后者,它是否要求您在输入每条线及其长度或仅长度后打印?
我提出的两个选项是完全不同的,所以我真的很感激一些建议。
答案 0 :(得分:1)
不,它没有。在本书的这一点上,你不应该知道如何处理和存储任意长度的行。第1章是对C的一个非常肤浅的介绍,不期望你重新设计整个代码。
考虑到这一点:练习要求您尽可能多地打印该行,即如果该行长于MAXLINE
个字符,则只需打印第一个MAXLINE
。 但您还应该打印原始行的长度。换句话说,你尽可能多地存储MAXLINE
个字符,但是为了计算,你只能在该限制之后阅读。
要做到这一点,必须更新getline()
函数以便将字符计数到行尾,即使它已达到缓冲区的限制,在这种情况下它会计数,但它
显然不会将文本写入缓冲区。