1-22 编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置 在输入行的第 n 列之前的最后一个非空格之后。要保证程序能够智能地处理输入行很长以及 在指定的列前没有空格或制表符时的情况

发布时间 2023-07-18 17:39:29作者: 语巫

Archlinux

GCC 13.1.1  20230429

2023-07-18 17:32:11 星期二

 


点击查看代码
#include<stdio.h>


#define SIGN 12     //折行记号(字符数)


int main()
{
   int c_in, c_cnt;

    c_in = c_cnt = 0;
    
    while( (c_in = getchar()) != EOF )
    {
        c_cnt++;
        if( c_cnt < SIGN ){
            putchar( c_in );
            if( c_cnt == SIGN-1 ){
                if( c_in != ' ' && c_in != '\t' ){
                    puts("~");          //第11个字符不是空格,制表符,就添加空格并换行
                    c_cnt = 0;
                }
                else{
                    puts("");   //否则直接换行
                    c_cnt = 0;
                }
            }
        }
    }


    return 0;
}

 


运行截图:

image

“x d q z s....”是19个字符,‘~’是第12个字符,输出正确。

 


小白刚学习C语言,代码质量不高,欢迎评论。