编写一个程序,把较长的输入行“折”成短一些的多行,折行的位置在输入行的第N列之前的最后一个非空格之后
来源:互联网 发布:js循环数组赋值 编辑:程序博客网 时间:2024/06/05 17:37
MAXCOL是一个符号常量,它给出了输入行的折行位置,即输入行的第N列。整型变量pos是程序在文本行中的当前位置。程序将在输入行的每一处第N列之前对该输入行折行。
该程序把制表符扩展为空格,每遇到一个换行符就把当前的输入文本行打印出来,每当变量pos的值达到MAXCOL时,就对输入行进行折叠。
函数findblnk从输入行的pos处开始倒退着寻找一个空格,目的是为了保持折行位置的单词的完整,如果找到一个空格符,就返回紧跟在该空格符后面的那个位置的下标,如果没有找到空格,就范围MAXCOL
#include <stdio.h>#define TABINC 4#define MAXCOL 10 //指定输入行的折行位置char line[MAXCOL]; /* 全局数组,在以下函数中都能共同访问 */int exptab(int pos);int findblnk(int pos);int newpos (int pos);void printl(int pos); int main(){ int c, pos; pos = 0; while ((c = getchar()) != EOF) { line[pos] = c; /* 保存当前的字符 */ if (c == '\t') pos = exptab(pos); else if (c == '\n') { printl(pos); pos = 0; } else if(++pos >= MAXCOL) //超过限定的折行字符个数 { pos = findblnk(pos); printl (pos); pos = newpos(pos); } }}int exptab(int pos) /* 将TAB制表符转换为空格 */{ line[pos] = ' '; for (++pos; pos < MAXCOL && pos % TABINC != 0; ++pos) line[pos] = ' '; if (pos < MAXCOL) return pos; else { printl(pos); return 0; }}void printl (int pos) //打印该行{ int i; for (i = 0; i < pos; ++i) putchar(line[i]); if (pos > 0) putchar ('\n');}int findblnk (int pos) /* 往前搜索一个空格,为了保持折行位置的单词完整性 */{ while (pos > 0 && line[pos] != ' ') --pos; if (pos == 0) //没找到空格 return MAXCOL; else //找到空格 return pos + 1;}int newpos (int pos) //调整输入行的位置{ int i, j; if (pos <= 0 || pos >= MAXCOL) //重置为0,开始新的折行 return 0; else { i = 0; for (j = pos; j < MAXCOL; ++j) //将剩余的字符复制到新的折行开始处 { line[i] = line[j]; ++i; } return i; }}
0 0
- 编写一个程序,把较长的输入行“折”成短一些的多行,折行的位置在输入行的第N列之前的最后一个非空格之后
- 练习1-22 编写一个程序,把较长的输入行“折”成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个空格之后
- 自己搞,带注释,适合初学者:C程序设计语言练习1-22 把较长的输入行折成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个非空格之后
- 把较长的输入行折成短一些的两行或多行,折行的位置在输入行的第n列之前的最后一个元素。
- 把较长的输入行“折”成短一些的两行或多行
- the c programing language 1-22 较长输入行折成短些的多行,非缓冲方式实现
- 编写一个程序,删除每个输入行的空格及制表符,并删除完全是空格的行
- exercise1-18 编写一个程序,删除每个输入行末尾的空格及制表符,删除完全是空格的行
- 输入两个字符串,返回较长的一个
- 编写一个程序,把它的输入复制到输出,并将输入中连续的空格用一个空格代替
- 编写一个求n个数的平均值及最小值的程序。要求:程序执行时,用户先由键盘输入n的值,之后输入n个数,最后,程序显示平均值和最小值。
- 练习5-13 编写程序tail,将其输入中的最后n行打印出来。默认情况下,n的值为10,但可以通过一个可选参数改变n的值
- 编写一个程序,要求输入两个浮点数,然后打印出用二者的差值除以二者的乘积所得的结果。在用户非数字的输入之前程序循环处理输入值。
- ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- C语言 - ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- 编写一个程序,一行行的读取输入行,直至到达文件尾。算出每行输入行的长度,然后把最长的那行打印出来
- 练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行
- 编写一个将输入复制到输出的程序,并将连续的多个空格用一个空格代替。
- SDK手动创建窗口
- STUN/TURN/ICE协议在P2P SIP中的应用(二)
- Talking R through Java
- 谷歌约束控件(ConstraintLayout)扁平化布局入门
- Spring注解和非注解实现声明时事务处理功能
- 编写一个程序,把较长的输入行“折”成短一些的多行,折行的位置在输入行的第N列之前的最后一个非空格之后
- halcon中的分类器之GMM算子全讲解
- Android系统中Bitmap是否有调用recycle方法的必要性
- CRC8 测试程序
- ModSecurity OWASP 规则集说明
- 将一个字符串转换为整数
- 如何显示ViewPager上下页的部分布局
- iOS真机测试
- android 中TextView设置部分文字背景色和文字颜色