[題目分析]本題要求字符串s拆分成字符串s和字符串s要求字符串s按給定長度n格式化成兩端對齊的字符串即長度為n且首尾字符不得為空格字符算法從左到右掃描字符串s找到第一個非空格字符計數到n第n個拷入字符串s的字符不得為空格然後將余下字符復制到字符串s中
void format (char *s*s*s)//將字符串s拆分成字符串s和字符串s要求字符串s是長n且兩端對齊
{char *p=s *q=s;
int i=;
while(*p!= \ && *p== ) p++;//濾掉s左端空格
if(*p== \) {printf(字符串s為空串或空格串\n);exit();}
while( *p!=\ && i<n){*q=*p; q++; p++; i++;}//字符串s向字符串s中復制
if(*p ==\){ printf(字符串s沒有%d個有效字符\nn); exit();}
if(*(q)== ) //若最後一個字符為空格則需向後找到第一個非空格字符
{p ;//p指針也後退
while(*p== &&*p!=\) p++;//往後查找一個非空格字符作串s的尾字符
if(*p==\) {printf(s串沒有%d個兩端對齊的字符串\nn); exit();}
*q=*p; //字符串s最後一個非空字符
*(++q)=\; //置s字符串結束標記
}
*q=s;p++; //將s串其余部分送字符串s
while (*p!= \) {*q=*p; q++; p++;}
*q=\; //置串s結束標記
}
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/22602.html