程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C實現字符行排版

C實現字符行排版

編輯:關於C

將字符行內單字之間的空白符平均分配插入到單字之間,以實現字符行排版。首先要統計字符行內單字個數,字符行內的空白字符數。然後計算單字之間 應該平均分配的空白字符數,另外約定多余的空白字符插在前面的單字間隔中前面的每個間隔多一個空白符,插完為止。

下面是我的代碼的實現部分,這個字符行排版代碼比較簡答,其中的,實現統計單詞個數的方法還是值得大家學習一下的。

#include 

#define N 80

/**
 * @brief main
 *  將字符行內單字之間的空白符平均分配插入到單字之間,
 *  以實現字符行排版。
 *
 *  首先要統計字符行內單字個數,字符行內的空白字符數。然後計算單字之間
 *  應該平均分配的空白字符數,另外約定多余的空白字符插在前面的單字間隔中
 *  前面的每個間隔多一個空白符,插完為止。
 * @return
 */

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

下面是我的程序的運行結果:

這裡寫圖片描述

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved