把较长的输入行“折”成短一些的两行或多行

     源自《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中的第三种输入输出情况,第二行输出时,头部输出了空格,可以将输出行头部的空格去掉,将会更加严谨。

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值