C 为什么删除单个字符会留下空白?
我试图用减法替换字符。它可以工作,但使用此方法会留下一个空白:C 为什么删除单个字符会留下空白?,c,tabs,C,Tabs,我试图用减法替换字符。它可以工作,但使用此方法会留下一个空白: #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); } } #包括 内部主(空){ INTC; 而((c=getchar(
#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);
}
}
#包括
内部主(空){
INTC;
而((c=getchar())!=EOF){
如果(c=='\t')
putchar('t');
如果(c=='\t')
c=c-'\t';
普查尔(c);
}
}
正是减法产生了不需要的输出,我不知道为什么
输入示例:
你好选项卡选项卡
输出:
你好,塔伯特,塔伯特,塔伯特
目标是Hello tabttabtab 空白是打印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);
如果您收到不需要的输出,请在您的帖子中包含一些您正在提供/获得的输入和输出示例。您希望用什么替换该字符?为什么你认为减法是一种方法呢?请提供一些能正确编译和缩进代码的东西。你想实现什么还不太清楚。是否要编写带制表符的字符串的转义表示形式?无论如何,
'\t'-'\t'
是零或空字符,它不是可打印字符。您的控制台可能会打印空白。@Keon欢迎使用堆栈溢出!请用你的代码应该做什么来更新你的问题。也许,使用示例输入和预期输出进行更新可能会有所帮助。