我正在尝试捕获通过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;
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何摆脱\n按 Enter 时得到的那个,我想知道shif+entervs 是否enter alone有什么不同。我阅读了它在 Microsoft Word 中的作用:新段落与换行符。
注释中链接了答案Removing Trailing newline character from fgets() input ,它向您展示了解决方案。
不过,我想在这里指出另一件事。结束输入的常见方法是按Ctrl+ D,这会将 EOF 发送到程序。或者至少大多数(全部?) *nix 终端都是如此。但这是您所使用的终端特定的详细信息,因此您必须阅读特定终端的文档。
我找到了这个答案,它告诉你如何在 Windows 上执行此操作。不幸的是,答案基本上是你无法以好的方式做到这一点。