C 读取未知数量的行

C 读取未知数量的行,c,input,stdin,gets,C,Input,Stdin,Gets,我需要用C语言实现这个程序,它从stdin中读取未知数量的行。 我知道最大行数是100行。 我尝试使用获取,但不知道何时停止循环。 您能告诉我如何实现它吗?这取决于您希望程序何时停止。有几种常见的方法: 从不:在最终用户点击^C或使用操作系统的功能终止程序之前,您运行无限循环 直到用户自己在一行上输入一个特殊标记,即“关键字”QUIT、EXIT,等等 直到用户输入空行(即点击Enter) 由于您案例中的最大值为100,因此您可以使用它作为限制,在达到最大值后自动终止输入。您要停止读取时的条件是什

我需要用C语言实现这个程序,它从stdin中读取未知数量的行。 我知道最大行数是100行。 我尝试使用
获取
,但不知道何时停止循环。 您能告诉我如何实现它吗?

这取决于您希望程序何时停止。有几种常见的方法:

  • 从不:在最终用户点击
    ^C
    或使用操作系统的功能终止程序之前,您运行无限循环
  • 直到用户自己在一行上输入一个特殊标记,即“关键字”
    QUIT
    EXIT
    ,等等
  • 直到用户输入空行(即点击
    Enter

  • 由于您案例中的最大值为100,因此您可以使用它作为限制,在达到最大值后自动终止输入。

    您要停止读取时的条件是什么?@davogotland-否。Ii是工作的一部分,不使用
    get()
    ;这是灾难的秘诀。忘记你曾经读过关于现有函数的任何东西。改为使用
    fgets()
    (但请记住去掉
    fgets()
    保留但
    get()
    删除的换行符)。最大行长如何?@JonathanLeffler从标准输入读取时,
    EOF
    肯定是最常见的。但是OP特别提到了console,这向我暗示他正在编写某种交互程序。最大值是100,也可以是10050@Yakov正如Jonathan Leffler在他的“下一个最常见”选择中所建议的那样,您应该阅读到
    EOF
    或限制,以先到者为准。从UNIX控制台运行程序时,请在行首输入Control-D字符,以将
    EOF
    发送到程序的输入。@dasblinkenlight按ctrl-D关闭输入流。您不能“发送EOF”。当输入流关闭时,程序将调用read(),它将返回0。如果read()由诸如getchar()之类的stdio函数调用,则该函数将返回EOF。如果read是由fread()调用的,fread将返回0,程序将调用feof()以查看是否已到达文件末尾。说“send EOF”会使unix文件包含一个标记文件结尾的条目的神话永久化。当然,他们没有。@williampersell“发送EOF”是一种严重的过分简化。我没有意识到关于UNIX文件包含某种
    EOF
    标记的愚蠢神话,否则我会更加小心地选择单词。