Можно ли прочитать неизвестное количество строк из консоли в C #? - PullRequest
7 голосов
/ 03 января 2012

Есть функция, которая может читать одну строку из консольного ввода (Console.ReadLine()), но я хочу прочитать или произвольное количество строк, которое неизвестно во время компиляции.

Ответы [ 4 ]

15 голосов
/ 03 января 2012

Конечно, это так.Просто используйте только чтение одной строки (используя ReadLine() или как вам угодно) за раз внутри цикла for (если вы знаете в начале чтения, сколько строк вам нужно) или в цикле while (если хотитеостановить чтение, когда вы достигнете EOF или определенного ввода).

РЕДАКТИРОВАТЬ:

Конечно:

while ((line = Console.ReadLine()) != null) {
    // Do whatever you want here with line
}
3 голосов
/ 03 января 2012

Некоторые из других ответов здесь повторяются до тех пор, пока не встретится нулевая строка, в то время как другие ожидают, что пользователь напечатает что-то особенное, например «EXIT». Имейте в виду, что чтение с консоли может быть введено человеком или перенаправленным входным файлом:

myprog.exe < somefile.txt

В случае перенаправленного ввода Console.ReadLine () вернет ноль, когда достигнет конца файла. В случае, если пользователь запускает программу в интерактивном режиме, он должен знать, как вводить символ конца файла (Ctrl + Z, затем Enter или F6, затем Enter). Если это интерактивный пользователь, вам может понадобиться сообщить ему, как сигнализировать об окончании ввода.

1 голос
/ 03 января 2012

простой пример:

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;
}
}
1 голос
/ 03 января 2012

Лучше всего использовать цикл:

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...