我正在 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+enter
与enter alone
是否有任何区别。我了解了它在Microsoft Word中的功能:新段落vs换行符。 最佳答案
答案Removing trailing newline character from fgets() input已链接到注释中,为您显示了解决方案。
但是,我想在这里指出另一件事。结束输入的常见方法是按Ctrl + D,它将把EOF发送到程序。或至少大多数(全部?)* nix终端可以。但这是您所使用的终端的特定细节,因此您必须阅读特定终端的文档。
我找到了this答案,它告诉您如何在Windows上进行操作。不幸的是,答案基本上是您不能以一种好的方式做到这一点。