Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ubuntu上提供EOF,Ctrl-D似乎不起作用?_C_Linux_Ubuntu - Fatal编程技术网

如何在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>