我正在阅读'C语言'。在本练习中,我应该编写一个程序来替换具有等效空格的制表符。这是我的代码,
#include <stdio.h>
#define TABWIDTH 8
int main() {
int c;
while ((c = getchar()) != EOF) {
if (c == '\t') {
for (int i = 1; i <= TABWIDTH; ++i) {
putchar(' ');
//printf("%d\n", i);
}
} else {
putchar(c);
}
}
return 0;
}
问题是选项卡的大小在mac终端中有点不一致。在我的程序中,我假设它总是8个空格,但在终端中并不总是8个。 这是我得到的输出 选项卡首先
k // this is tabed
k // this is 8 spaces
标签位于字符
之后k k // this tabed
k k // this 8 spaces
答案 0 :(得分:1)
标签转到下一个制表位,它位于第1,9,17,25列等。
在您的示例中,标签前面有 k
,但不计算(因为标签转到第9列),而 k
< / strong>在计算空格之前(因为间距忽略制表位)。