[Solved] Why is tabbed space width not constant


It works as intended.

The original purpose of tab is printing tables. Rather than expanding to exactly N spaces (N being tab width, normally 4 or 8), it sets X coordinate of the cursor to the next multiple of N.

Consider this example:

#include <stdio.h>

int main()
{
    for (int i = 0; i < 20; i++)
    {
        for (int j = 0; j < i; j++)
            putchar('#');
        puts("\t|");
    }
}

Output for tab width 8:

        |
#       |
##      |
###     |
####    |
#####   |
######  |
####### |
########        |
#########       |
##########      |
###########     |
############    |
#############   |
##############  |
############### |
################        |
#################       |
##################      |
###################     |

Output for tab width 4:

    |
#   |
##  |
### |
####    |
#####   |
######  |
####### |
########    |
#########   |
##########  |
########### |
############    |
#############   |
##############  |
############### |
################    |
#################   |
##################  |
################### |

0

solved Why is tabbed space width not constant