源自《The C Programming Language》P25 pr1-22:
编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格符之后。
要保证程序能够智能地处理输入行很长以及在指定的列前没有空格或是制表符的情况。
参考代码:
分析:
1, 对题意“折行的位置在输入行的第n列之前的最后一个非空格符之后”的理解:比如每隔10个字符折成一行,
如果这10个字符中间没有空格,则输出;如果有一个空格,则输出位置0开始的字符到本空格处之间的所有字符;
如果有若干个空格,则输出位置0到最后一个空格处之间所有字符。
例如:输入:abcd/tehghjk,
输出:abcd
ehghjk
输入:abc def ghk
输出:abc def
ghk
输入:abc fekgl(中间有7个空格)
输出:abc
fekgl
2, 对从输入缓冲区中读取的每个字符c,依据c == '/t',c == '/n',++pos >= MAXCOL分成三类处理。
缺陷:如同分析1中的第三种输入输出情况,第二行输出时,头部输出了空格,可以将输出行头部的空格去掉,将会更加严谨。