我正在 try catch 我通过stdin流输入的所有字符,但EOF除外。我想输入多行文本:每行末尾都有\n

int getline(char s[])
{
    printf("Call-getline()\n");

    int c;
    int idx=0;

    while((c=getchar()) != EOF)
    {
        s[idx++] = c;
    }

    printf("\n-EOF found--\n");

    s[idx] = '\0';

    return idx;
}

我不知道如何摆脱按Enter键时得到的\n,我想知道shif+enterenter alone是否有任何区别。我了解了它在Microsoft Word中的功能:新段落vs换行符。

最佳答案

答案Removing trailing newline character from fgets() input已链接到注释中,为您显示了解决方案。

但是,我想在这里指出另一件事。结束输入的常见方法是按Ctrl + D,它将把EOF发送到程序。或至少大多数(全部?)* nix终端可以。但这是您所使用的终端的特定细节,因此您必须阅读特定终端的文档。

我找到了this答案,它告诉您如何在Windows上进行操作。不幸的是,答案基本上是您不能以一种好的方式做到这一点。

10-05 18:50
查看更多