/* 1-20. Write a program detab that replaces tabs in the input with the proper number of blanks to space to the next tab stop. Assume a fixed set of tab stops, say every n columns. Should n be a variable or a symbolic parameter? */ #include <stdio.h> #define TABINC 8 /* replace tabs with the proper number of blanks */ void main() { int c, nb, pos; nb = 0; /* number of blanks necessary */ pos = 1; /* position of character in line */ while((c = getchar()) != EOF) { if( c == '\t') { /* tab character */ nb = TABINC - (pos - 1) % TABINC; while( nb > 0 ) { putchar(' '); ++pos; --nb; } } else if( c == '\n') { /* newline character */ putchar(c); pos = 1; } else { putchar(c); /* all other characters */ ++pos; } } }