我正在尝试编写一个程序,用一个标签替换一个或多个标签的字符串。
这是我写的:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c;
while ((c = getchar()) != '\n')
{
if (c == 9)
{
while((c=getchar())== 9)
putchar(' ');
if (c != 9)
break;
}
putchar(c);
}
}
我将它与换行符进行比较,因为我没有得到EOF并且按下ctrl-z什么都不做,至少在Windows上。 那么输出打印空格而不是制表符。有人可以指出我做错了什么吗?
答案 0 :(得分:2)
事实上,当您在break
/ break
内部使用for
退出循环(不是您想要的)时,无需while
,如果你想只允许一个标签使用标记和continue
如果前一个字符也是一个标签:
int c, tab = 0;
while (((c = getchar()) != '\n') && (c != EOF)) {
if (c == '\t') {
if (tab == 1) continue;
tab = 1;
} else {
tab = 0;
}
putchar(c);
}
按CTRL + Z +简介在Windows中发送EOF
。
答案 1 :(得分:1)
因为你写了putchar(' ')
。
是一个错误。改为写putchar('\t')
。
没有' '
这样的字符。这是4个空格。