C 理解EOF和break
我正在尝试编写一个程序,用单个选项卡替换一个或多个选项卡的字符串 以下是我写的:C 理解EOF和break,c,break,C,Break,我正在尝试编写一个程序,用单个选项卡替换一个或多个选项卡的字符串 以下是我写的: #include <stdio.h> #include <stdlib.h> int main() { int c; while ((c = getchar()) != '\n') { if (c == 9) { while((c=getchar())== 9) putchar(
#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);
}
}
#包括
#包括
int main()
{
INTC;
而((c=getchar())!='\n')
{
如果(c==9)
{
而((c=getchar())==9)
putchar(“”);
如果(c!=9)
打破
}
普查尔(c);
}
}
我把它和新行比较,因为我没有EOF,按ctrl-z什么都不做,至少在Windows上是这样。
输出打印的是空格而不是制表符。有人能指出我做错了什么吗?事实上,当你在
中为/使用break
时,如果你退出循环(不是你想要的),如果你想只允许一个制表符使用哨兵,如果前一个字符也是制表符,则继续使用:
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个空格 欢迎来到堆栈溢出!听起来您可能需要学习如何使用a来逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:.putchar('\t')代码>?您是否在问如何使用ctrl-z之类的键来打破while循环?或者关于替换字符串中的制表符-您似乎正在工作,请阅读。修复算法中的逻辑错误是开发人员在调试会话中的工作,而不是SO问题的主题。