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