了解 EOF 和中断
Understanding EOF and break
我正在尝试编写一个程序,用一个选项卡替换一个或多个选项卡的字符串。
这是我写的:
#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 上。
那么输出打印空格而不是制表符。有人可以指出我做错了什么吗?
不需要break
,事实上,当你在for
/while
中使用break
时,你退出了循环(不是你想要的), 如果你想只允许一个制表符使用一个标记和 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 + Intro 在 Windows 中发送 EOF
。
因为你写了 putchar(' ')
.
这是一个错误。改为写 putchar('\t')
。
没有' '
这样的字符。这是4个空格。
我正在尝试编写一个程序,用一个选项卡替换一个或多个选项卡的字符串。
这是我写的:
#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 上。 那么输出打印空格而不是制表符。有人可以指出我做错了什么吗?
不需要break
,事实上,当你在for
/while
中使用break
时,你退出了循环(不是你想要的), 如果你想只允许一个制表符使用一个标记和 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 + Intro 在 Windows 中发送 EOF
。
因为你写了 putchar(' ')
.
这是一个错误。改为写 putchar('\t')
。
没有' '
这样的字符。这是4个空格。