[题目分析]本题要求字符串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结束标记
}
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []