#include #include #include #define MAX_BUFFER 1024 #define SPACE ' ' #define TAB '\t' int CalculateNumberOfSpaces(int Offset, int TabSize) { return TabSize - (Offset % TabSize); } /* K&R's getline() function from p29 */ int getline(char s[], int lim) { int c, i; for(i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) s[i] = c; if(c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; } int main(void) { char Buffer[MAX_BUFFER]; int TabSize = 5; /* A good test value */ int i, j, k, l; while(getline(Buffer, MAX_BUFFER) > 0) { for(i = 0, l = 0; Buffer[i] != '\0'; i++) { if(Buffer[i] == TAB) { j = CalculateNumberOfSpaces(l, TabSize); for(k = 0; k < j; k++) { putchar(SPACE); l++; } } else { putchar(Buffer[i]); l++; } } } return 0; }