C - 为什么减去单个字符会留下空白?
C - Why substracting single characters leave a blank?
我尝试用减法替换字符。它有效,但使用此方法会留下空白:
#include <stdio.h>
int main(void) {
int c;
while((c = getchar()) != EOF) {
if (c == '\t')
putchar('t');
if(c == '\t')
c = c - '\t';
putchar(c);
}
}
减法给出了不需要的输出,我不明白为什么。
示例输入:
你好选项卡选项卡选项卡
输出:
你好 tabt tabt tab
目标是你好 tabttabttab。
"blank"是打印NUL(0
)字符的结果。每当您输入 '\t'
时,您都在打印 NUL,这不是可打印的字符。
if(c == '\t')
c = c - '\t';
putchar(c); // same as putchar(0); if c == '\t'
也许,您想将制表符替换为 -
:
if(c == '\t')
c = '-';
putchar(c);
我尝试用减法替换字符。它有效,但使用此方法会留下空白:
#include <stdio.h>
int main(void) {
int c;
while((c = getchar()) != EOF) {
if (c == '\t')
putchar('t');
if(c == '\t')
c = c - '\t';
putchar(c);
}
}
减法给出了不需要的输出,我不明白为什么。
示例输入: 你好选项卡选项卡选项卡
输出: 你好 tabt tabt tab
目标是你好 tabttabttab。
"blank"是打印NUL(0
)字符的结果。每当您输入 '\t'
时,您都在打印 NUL,这不是可打印的字符。
if(c == '\t')
c = c - '\t';
putchar(c); // same as putchar(0); if c == '\t'
也许,您想将制表符替换为 -
:
if(c == '\t')
c = '-';
putchar(c);