如果用户输入输入,则一次打印100行

时间:2016-06-30 20:57:09

标签: c# file input io

我有一个控制台应用程序,可以打印包含行(数千)文本的文本文件中的行。

using (TextReader tr = new StreamReader(__inputfile))
{
    string nextline = tr.ReadLine();
    while (nextline != null)
    {
        Console.WriteLine(nextline);
        nextline = tr.ReadLine();
    }
}

我想更改它,以便它只打印100行,要求用户在打印下100行之前按Enter键,依此类推等等

Console.WriteLine("Press Enter to continue...or Control-C to stop");
Console.ReadLine();

用户点击Enter(或任何键确实)之后,它会打印接下来的100行......然后它会继续,直到文件用完行,然后程序停止。

3 个答案:

答案 0 :(得分:3)

一种方法可能是简单地跟踪您向控制台写入的行数。当您达到100行时,停止输出,等待输入,重置计数器或使用%100,然后恢复循环。

答案 1 :(得分:2)

使用模运算符:使用计数器。在开始时将其初始化为0。阅读每一行后增加它。在循环内部有一个检查:

if (counter % 100 == 0)
  waitForInput(); 

没有模运算符:用户点击回车后你也可以将counter设置为0 - 在这种情况下你不需要使用%而且只能检查

 if (counter == 100) {
   waitForInput();
   counter = 0;
 }

PS。像这样:

int counter = 0;
using (TextReader tr = new StreamReader(__inputfile))
{
    string nextline = tr.ReadLine();
    while (nextline != null)
    {
        counter++;
        if(counter == 100)
        {
            Console.WriteLine("Press Enter to continue...");
            Console.ReadLine();
            counter = 0;
        }

        Console.WriteLine(nextline);
        nextline = tr.ReadLine();

    }

}

答案 2 :(得分:2)

using (TextReader tr = new StreamReader(__inputfile))
{
    var count=1;
    string nextline = tr.ReadLine();

    while (nextline != null)
    {
        if (count % 100 == 0)
        {
            Console.WriteLine("Press Enter to continue...or Control-C to stop");
            nextline=Console.ReadLine();
            Console.WriteLine(nextline);
        }
        else
        {
            Console.WriteLine(nextline);
            nextline = tr.ReadLine();
        }

        count++;
    }
}