📄 trim.cpp
字号:
#include <iostream.h>
void copyach(char *&q,char ch)
{
*q++=ch;
}
void copybach(char *&q,char ch)
{
*q++=' ';
*q++=ch;
}
int state[][3]={{0,2,3},{1,2,3},{1,2,3}};
void (*funt[][3])(char *&,char)={{NULL,copyach,NULL},{NULL,copybach,NULL},{NULL,copyach,NULL}};
char *ver0(char *s)
{
int c,ckind,status=0;
char *p=s,*q=s;
for (;status!=3;s++)
{
c=*s;
if (c==' ' || c=='\t' || c=='\n')
ckind=0;
else
if (c=='\0')
ckind=2;
else
ckind=1;
if (funt[status][ckind])
(*funt[status][ckind])(q,c);
status=state[status][ckind];
}
*q='\0';
return p;
}
char *ver1(char *s)
{
char *p=s,*q=s;
for (;*s==' ' || *s=='\t' || *s=='\n';s++)
;
while (*s)
{
*q++=(*s=='\t' || *s=='\n') ? ' ':*s;
if (*s!=' ' || *s!='\t' || *s!='\n')
s++;
else
while (*s==' ' || *s=='\t' || *s=='\n')
s++;
}
if (q>p && *(q-1)==' ')
*(q-1)='\0';
else
*q='\0';
return p;
}
char *ver2(char *s)
{
int flag=0;
char *p=s,*q=s;
for(;*s;s++)
{
if (*s==' ' || *s=='\t' || *s=='\n')
flag=(flag==2) ? 1 : flag;
else
{
if (flag==1)
*q++=' ';
*q++=*s;
flag=2;
}
}
*q='\0';
return p;
}
void main()
{
char s[120],*ss;
cin.getline(s,sizeof(s));
ss=ver2(s);
cout<<ss<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -