c语言输出中的行计数
我在练习数行程序。我有点困惑,我应该如何为这个程序提供输入。我尝试键入随机句子,包括程序中的新行元素“\n”。但无论我给出什么输出,输出仍然是空的,并要求我继续键入。我上网已经有一段时间了,我不知道我在哪里失败了。你能帮帮我吗。我打算跳过这节课,然后再回来。但教科书后面的课程取决于这个主题。谢谢c语言输出中的行计数,c,C,我在练习数行程序。我有点困惑,我应该如何为这个程序提供输入。我尝试键入随机句子,包括程序中的新行元素“\n”。但无论我给出什么输出,输出仍然是空的,并要求我继续键入。我上网已经有一段时间了,我不知道我在哪里失败了。你能帮帮我吗。我打算跳过这节课,然后再回来。但教科书后面的课程取决于这个主题。谢谢 #include <stdio.h> /* count lines in input */ main() { int c, nl; nl = 0; while ((c
#include <stdio.h>
/* count lines in input */
main()
{
int c, nl;
nl = 0;
while ((c = getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
#包括
/*计算输入中的行数*/
main()
{
INTC,nl;
nl=0;
而((c=getchar())!=EOF)
如果(c=='\n')
++nl;
printf(“%d\n”,nl);
}
因此,输出仍然是空的,因为程序在循环时卡在上,因为它下面的代码不在花括号({}
)之间,因此,程序会无限期地请求输入字符,而没有输出
另外,我对您的代码有点困惑,因为我不知道如何通过stdin
而不使用文件重定向来访问EOF
。通过搜索堆栈溢出,我发现您需要在基于UNIX的系统上键入Ctrl+D,或者在Windows上键入Ctrl+Z,以便通过控制台键入来使用EOF。
()
顺便说一下,我已经修改了您的代码,我只是不知道这是否正是您想要做的:
#include <stdio.h>
/* count lines in input */
main()
{
int c, nl;
nl = 0;
while ((c = getchar()) != EOF)//EOF can be reached by stdin when pressing Ctrl+D
{
if (c == '\n')
{
++nl;
}
}
printf("Number of lines: %d\n", nl);
}
#包括
/*计算输入中的行数*/
main()
{
INTC,nl;
nl=0;
而((c=getchar())!=EOF)//按Ctrl+D时,stdin可以达到EOF
{
如果(c=='\n')
{
++nl;
}
}
printf(“行数:%d\n”,nl);
}
好的编码 只需将文件重定向到您的程序,例如,.g/your_prog
。这将重定向您的_文件
,作为stdin
上的程序输入。(适用于Linux、Windows或Mac)使用键盘时,键入一些内容(如果需要,包括换行符),然后在Windows或Un*x.@DavidC.Rankin的末尾键入
。@DavidC.Rankin嘿,我有点困惑。我是否需要为此程序提供外部文本文件?我以为这是在问用户输入否,你可以用两种方法。关键是您必须向getchar()
指示输入结束(EOF
),以便退出循环。否则,getchar()
只是坐在那里阻塞——等待下一个输入。当您到达终点时,重定向文件会自动生成一个EOF
。当使用键盘工作时,您必须生成@pmg描述的手动EOF
。(您也可以在bash…@DavidC.Rankin中使用一个herdeoc或herestring,现在就有意义了。感谢David为您提供宝贵的时间和解释。这种支持总是让我有动力学习新东西是的,这很好。我不知道CTRL+D可以生成EOF