是否可以从C#中的控制台读取未知数量的行?

时间:2012-01-03 01:48:19

标签: c# console

有一个函数,它可以从控制台输入(Console.ReadLine())读取一行,但我希望读取或任意数量的行,这在编译时是未知的。

4 个答案:

答案 0 :(得分:15)

当然是。只需在for循环中一次读取一行(使用ReadLine()或其他任何你想要的东西)(如果你知道在读取需要多少行的开头)或在while循环中(如果您希望在到达EOF或某个输入时停止阅读。

修改

不确定

while ((line = Console.ReadLine()) != null) {
    // Do whatever you want here with line
}

答案 1 :(得分:3)

此处的其他一些答案循环直到遇到空行,而其他人则希望用户输入特殊内容,例如“EXIT”。请记住,从控制台读取可以是人物输入或重定向输入文件:

myprog.exe < somefile.txt

在重定向输入的情况下,Console.ReadLine()在到达文件末尾时将返回null。如果用户以交互方式运行程序,则必须知道如何输入文件结束字符(Ctrl + Z后跟输入或F6后输入)。如果它是交互式用户,您可能需要让他们知道如何发出输入结束的信号。

答案 2 :(得分:1)

这里最好的办法是使用循环:

string input;

Console.WriteLine("Input your text (type EXIT to terminate): ");
input = Console.ReadLine();

while (input.ToUpper() != "EXIT")
{
    // do something with input

    Console.WriteLine("Input your text(type EXIT to terminate): ");
    input = Console.ReadLine();
}

或者你可以这样做:

string input;

do
{
    Console.WriteLine("Input your text (type EXIT to terminate): ");
    input = Console.ReadLine();

    if (input.ToUpper() != "EXIT")
    {
        // do something with the input
    }
} while (input.ToUpper() != "EXIT");

答案 3 :(得分:1)

简单的例子:

class Program
{
static void Main()
{
CountLinesInFile("test.txt"); // sample input in file format
}

static long CountLinesInFile(string f)
{
long count = 0;
using (StreamReader r = new StreamReader(f))
{
    string line;
    while ((line = r.ReadLine()) != null)
    {
    count++;
    }
}
return count;
}
}