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月前
|
存储 文字识别 前端开发
用html+javascript打造公文一键排版系统13:增加半角字符和全角字符的相互转换功能
用html+javascript打造公文一键排版系统13:增加半角字符和全角字符的相互转换功能
|
4月前
【Typora】如何使用Markdown插入一段文字,部分左对齐,部分右对齐
如何在Markdown编辑器Typora中使用HTML语法实现同一行内文字的左对齐和右对齐布局。
350 1
|
7月前
|
前端开发 搜索推荐
【HTML专栏4】常用标签(标题、段落、换行、文本格式化、注释及特殊字符)
【HTML专栏4】常用标签(标题、段落、换行、文本格式化、注释及特殊字符)
92 0
|
7月前
|
SEO
如何像人类一样写HTML之标题、段落、换行、水平线与文本格式化标签
如何像人类一样写HTML之标题、段落、换行、水平线与文本格式化标签
如何像人类一样写HTML之标题、段落、换行、水平线与文本格式化标签
|
7月前
|
前端开发 容器
css英文文本不换行,css怎么实现英文不换行
css英文文本不换行,css怎么实现英文不换行
113 1
|
7月前
LaTeX 实现表格内换行
LaTeX 实现表格内换行
1472 1
|
前端开发
css 实现标签内容多行截取(...)数字换行--英文--文字处理
css 实现标签内容多行截取(...)数字换行--英文--文字处理
Latex标题左对齐
在ctexart类型文章中,标题\section标题是居中的,现需要改为左对齐,需要设置如下: \documentclass[UTF8]{ctexart} \CTEXsetup[format={\Large\bfse...
6261 0
|
前端开发 程序员
小细节:盒模型里面连续输入英文和数字不会自动换行,汉字会自动换行
小细节:盒模型里面连续输入英文和数字不会自动换行,汉字会自动换行
105 0