我正在尝试捕获我通过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中的功能:新段落与换行符。
答案 0 :(得分:3)
答案Removing trailing newline character from fgets() input已链接到评论中,为您显示了解决方案。
但是,我想在这里指出另一件事。结束输入的常用方法是按Ctrl + D,它将把EOF发送到程序。或至少大多数(全部?)* nix终端可以。但这是您所使用的终端的特定细节,因此您必须阅读特定终端的文档。
我找到了this的答案,它告诉您如何在Windows上执行此操作。不幸的是,答案基本上是您做不到好的方法。
答案 1 :(得分:0)
如果我没记错的话,我们可以按CTRL + C退出Visual Studio和Dev C ++控制台 否则,如果我们谈论CMD,那么您应该先写出口,然后输入Enter