029.字符行排版

简介: 029.字符行排版
/* 字符排版函数,将字符行内单字之间的空白字符平均分配插入到单字之间*/
#define N 80
edit(char *s)
{
  int i,sp,w,inw,v,r;
  char buf[N],*str;
  for(inw=sp=w=i=0;s[i];i++)
  {
    if(s[i]==' ')
    {   /* 统计空白个数*/
      sp++;
      inw=0;  /* 置空白符状态*/
    }
    else if(!inw)
    {
      w++;  /* 统计单字个数*/
      inw=1;  /* 置单字状态*/
    }
  }
  if(w<=1)
    return; /* 单字数不超过1, 不排版 */
  v=sp/(w-1); /* 每个间隔平均空白符 */
  r=sp%(w-1); /* 多余的空白符 */
  strcpy(buf,s);
  for(str=buf;;)
  {
    while(*str==' ')str++; /* 掠过空白符 */
    for(;*str&&*str!=' ';) /* 复制单字 */
      *s++=*str++;
    if(--w==0)
      return;   /* 全部单字复制完毕,返回 */
    for(i=0;i<v;i++)
      *s++=' '; /* 插入间隔空白符 */
    if(r)
    {
      *s++=' '; /* 插入一个多余空白符 */
      r--;
    }
  }
}
char buff[N];
main()    /* 用于测试edit函数 */
{
  clrscr();
  puts("This is a typeset program!\nPlease input a character line:\n");
  gets(buff);
  edit(buff);
  printf("\nThe character line after typeset is:\n\n%s\n",buff);
  puts("\n Press any key to quit...\n ");
  getch();
}
相关文章
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
|
3月前
|
JSON 数据格式
UltraEdit 去除文本中的空行,按指定字符换行
UltraEdit 去除文本中的空行,按指定字符换行
73 0
UltraEdit 去除文本中的空行,按指定字符换行
|
2月前
给kprobe添加字符数据显示方式
给kprobe添加字符数据显示方式
|
6月前
LaTeX 实现表格内换行
LaTeX 实现表格内换行
1299 1
|
11月前
|
前端开发
CSS:设置字母间距、中文汉字间距
CSS:设置字母间距、中文汉字间距
|
前端开发 程序员
小细节:盒模型里面连续输入英文和数字不会自动换行,汉字会自动换行
小细节:盒模型里面连续输入英文和数字不会自动换行,汉字会自动换行
98 0
中文CTEX加下划线无法换行问题
使用Ctex,ulem宏包中下划线命令\uline如果对中文处理,则中文换行失效,需要换成一下Ctex专用宏包。 \usepackage{CJKulem}
2462 0
html+css实战55-文本缩进
html+css实战55-文本缩进
87 0
html+css实战55-文本缩进
VB编程:去除文本框首尾空行-51
VB编程:去除文本框首尾空行-51
190 0
成功解决英文单词换行问题,文本里的单词换行时一个单词被分开成两个部分
成功解决英文单词换行问题,文本里的单词换行时一个单词被分开成两个部分
成功解决英文单词换行问题,文本里的单词换行时一个单词被分开成两个部分