【C言語】練習1-21
4786 ワード
考え方:
タブの役割については練習問題1-20で説明しました.
ここのテーマは、スペースの代わりに最小限のタブとスペースを使うことです.ここでは、以下のような状況に分けられます.
C言語コード実装:
#include<stdio.h>
#define ENTAB 8
void main(){
int c,nb,ntab,i,j,pos;
nb = 0;
ntab = 0;
i = 0;
j = 0;
pos = 1;
while((c=getchar()) != EOF){
if(c == ' '){
if(pos%ENTAB != 0){
nb++;
}else{
ntab++;
nb = 0;
}
pos++;
}else if(c == '
'){
nb = 0;
ntab = 0;
i=0;
j=0;
pos = 1;
putchar(c);
}else{
for(;i<ntab;i++){
putchar('\t');
}
for(;j<nb;j++){
putchar(' ');
}
if(c == '\t'){
pos += (ENTAB-pos%ENTAB)%ENTAB+1;
}else{
pos++;
}
putchar(c);
nb = 0;
ntab = 0;
i = 0;
j = 0;
}
}
}