首页 > 解决方案 > Shift + Enter 与控制台中的 Enter

问题描述

我试图捕捉我通过我的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;
}

我不知道如何摆脱\n按回车键时得到的那个,我想知道shif+entervs是否enter alone有什么不同。我读到了它在 Microsoft Word 中的作用:新段落与换行。

标签: cshiftenter

解决方案


评论中链接了从 fgets() 输入中删除尾随换行符的答案,该答案向您展示了解决方案。

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

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


推荐阅读