【发布时间】:2023-03-24 02:29:01
【问题描述】:
K&R(第 2 版,ANSI C)中的练习 1-18 要求读者:
编写一个程序来删除每行输入的尾随空格和制表符,并删除整个空白行。
我向社区提出的问题是,有人可以澄清一下“输入行”是指包含制表符和空白字符的输入,还是仅包含制表符和空白字符的输入行。
向经验丰富的开发人员寻求帮助,他们可以帮助我了解我是否过度考虑了这一点,或者是否有更简单的解决方案来解决这两个问题。
【问题讨论】:
-
这里的关键词是“尾随”——意思是以空格和制表符结尾的行。例如
"Hello world "→"Hello world"。但第二部分意味着删除只有制表符和空格的行。 -
“输入行”的意思就是——
fgets或等效返回的任何字符串。您不能对其包含的内容做出任何假设。它可以包含制表符、空格和其他字符的任意组合。所有制表符和空白当然是可能的,您需要正确处理它(不输出它)。 -
一行输入是任何字符序列,后跟一个换行符
'\n'。读取一行输入的典型方法是使用fgets。然而,在那次练习之前的几页,这本书实现了一个名为getline的函数,它从标准输入读取一行。 -
谢谢@user3386109、Nate 和 Johnny。感谢您的时间,并帮助我解决我的误解。
标签: arrays c kernighan-and-ritchie