#include <stdio.h>
#include <stdlib.h>
#define TAB 8
//先说明一下tab键,tab,不是跳固定长度,而是跳到下一制表的开始位置.
int main()
{
int space=0;//空格
int tab=0;//制表符
int position=0;//当前字符位置
char ch;//case中用|表示非空格字符,*表示空格
while((ch=getchar())!=EOF){
position++;
if(ch==' '){
if(position%TAB!=0)//case:||||*|||(空格串夹中间),****||||(空格串在前)
space++;
else{//case:||||****(空格串在后)
space=0;
tab++;
}
}
else{
for(int i=1;i<=tab;i++)
printf("%c",'\t');
tab=0;
if(ch=='\t')//case:||||****(这几个空格已被tab代替)**'\t'
space=0;
for(int i=1;i<=space;i++)
printf("%c",' ');
space=0;
putchar(ch);
if(ch=='\n')
position=0;
else if(ch=='\t')
position=position+(TAB-position%TAB);
}
}
return 0;
}
空格串替换为最少数量的制表符和空格
最新推荐文章于 2023-12-28 11:58:24 发布