將字符行內單字之間的空白符平均分配插入到單字之間,以實現字符行排版。首先要統計字符行內單字個數,字符行內的空白字符數。然後計算單字之間 應該平均分配的空白字符數,另外約定多余的空白字符插在前面的單字間隔中前面的每個間隔多一個空白符,插完為止。
下面是我的代碼的實現部分,這個字符行排版代碼比較簡答,其中的,實現統計單詞個數的方法還是值得大家學習一下的。
#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
下面是我的程序的運行結果: