如何在Ubuntu上提供EOF,Ctrl-D似乎不起作用?
我编写了以下代码,如果有多个空格,则只打印一个空格如何在Ubuntu上提供EOF,Ctrl-D似乎不起作用?,c,linux,ubuntu,C,Linux,Ubuntu,我编写了以下代码,如果有多个空格,则只打印一个空格 #include<stdio.h> void main() { int c; while((c=getchar())!=EOF) { if(c==' '||c=='\t') { while(c==' '||c=='\t') c=getchar(); putchar(' ');
#include<stdio.h>
void main()
{
int c;
while((c=getchar())!=EOF)
{
if(c==' '||c=='\t')
{
while(c==' '||c=='\t')
c=getchar();
putchar(' ');
putchar(c);
}
else
putchar(c);
}
}
#包括
void main()
{
INTC;
而((c=getchar())!=EOF)
{
如果(c=''| | c='\t')
{
而(c=''| | c='\t')
c=getchar();
putchar(“”);
普查尔(c);
}
其他的
普查尔(c);
}
}
您需要在一行输入Ctrl+D,然后输入Enter,或者一行按两次Ctrl+Din组合键
/a.out
富吧
或
/a.out
富吧
您是否忘记检查内部while()循环中是否有getchar()返回EOF?我知道这是一个Linux问题,但在MSVC中,换行后的第一次击键必须是等效的Ctrl-Z
。不,不。内部循环只是跳过了额外的制表符空间或空格。我已经编辑了代码并添加了额外的行putchar(c)在if块中,代码现在似乎神奇地工作了。也许它现在“神奇地”工作了,但您仍然没有测试输入,因为它不再是EOF
的选项卡或空格。
./a.out
foo bar<ENTER>
<Ctrl+D>
./a.out
foo bar<Ctrl+D><Ctrl+D>