【发布时间】:2013-02-10 12:30:05
【问题描述】:
我正在用 Kernighan 和 Ritchie 编写的 The C Programming Language 编写程序。
我目前正在练习 1-22,它说:
编写一个程序,将长输入行“折叠”成两个或多个较短的行,位于第 n 列输入之前的
last > non-blank character之后。 确保你的程序用很长的行做一些智能的事情,如果在指定的列之前没有空格或制表符。
我的问题不是如何做这个程序... 我的问题是我应该在哪里折叠线。
“在最后一个非空白字符之后”是什么意思?我应该在哪里折叠线?
请大家不要告诉我程序本身。我想自己做。
我只想知道我应该折叠线的位置。
编辑:还有一个问题...
如果我的行包含tabs 怎么办?在这种情况下,行的列长度从字符长度增加。应该考虑哪个长度?
编辑 2:
聪明的... 为了解决标签的情况,我有一个想法......
1-22 之前有 2 个练习——1-20 和 1-21。哪个是entab 和detab ......你们一定知道......所以我将首先detab 线然后折叠它,然后entab 折叠线......我认为这将是最聪明的选项卡。有吗?
【问题讨论】:
-
“请大家不要告诉我程序本身。我想自己做。” - 这本身就值得一票。
-
空白字符都是空格的形式。它基本上是要求您不要将单词一分为二。
-
尝试折叠第 80 列之前最后一个非空白字符之后的行
-
只是这个
Make sure your program does something intelligent with very long line有点模棱两可……是在告诉读者断章取义吗? -
完全正确:这就是为什么我在下面的回答中提到,如果练习有点模糊,你可以决定做什么。无论你决定做什么,你都会学到任何东西,所以尽可能多或少做你有信心做的事。
标签: c