inline bool IsSpace( char c )
{
return ( c==' ' || c=='\t' || c=='\n' );
}
void trimblanks(char *s)
{
int nlen = strlen(s);
int i=0, j=0;
int state = 0;//表示句首
while( i<=nlen )
{
switch( state )
{
case 0://表示句首
if ( IsSpace( s[i] ) )
i++;
else
{//合法字母或者结束符
state = 1;
s[j++] = s[i++];
}
break;
case 1: //表示句中
if ( IsSpace( s[i] ) )
state = 2;
s[j++] = s[i++];
break;
case 2://表示已读到一个空格
if ( IsSpace( s[i] ) )
i++;
else
{
state = 1;//回到句中状态
s[j++] = s[i++];
}
break;
default:
break;
}
}
nlen = strlen(s);//最后处理一个末尾的"空格"
if ( nlen > 0 && IsSpace( s[nlen-1] ) )
s[nlen-1] = '\0';
}
对句末的“空格”处理得不太好,期待有更好的解法 #include<stdio.h>
int main()
{
char a[100];
int i;
for(i=0;i<100;i++)
{
scanf("%c",&a[i]);
if(a[i]==' ';
i--;
}
printf("%s",a);
return 0;
}
◆◆
评论读取中....
请登录后再发表评论!
◆◆
修改失败,请稍后尝试