Ввод / вывод c#

Рейтинг: 0Ответов: 1Опубликовано: 18.01.2015

Господа, есть примитивный код, который считывает введенную строку, потом считанную строку преобразует в массив символов и далее выводит в цикле каждый символ отдельно:

static void Main()
    {
        StringReader sr = new StringReader(Console.ReadLine());
        char[] ch = new char[sr.ReadToEnd().Length];
        sr.Read(ch, 0, ch.Length);
        for (int x = 0; x < ch.Length; x++)
        {
            Console.WriteLine(ch[x]); 
        }
    }

Однако возникает проблема в этом месте кода char[] ch = new char[sr.ReadToEnd().Length];. Так как здесь создается массив длиной в количестве символов введенной строки. И следовательно при считывании всех символов получается, что позиция указателя становиться в конец строки, и далее он из-за этого на экран выводит пустые символы.

Господа, подскажите, пожалуйста, как именно в этом случае установить позицию на 0 или другой путь динамического получения количества символов. Спасибо.

Ответы

▲ 1Принят

@DreamChild правильно говорит, что не нужно читать строку два раза. Нужно просто считать всё в строку (она же массив символов), у которой есть и длина, и доступ посимвольный.

        StringReader sr = new StringReader(Console.ReadLine());
        string myStr = sr.ReadToEnd();

        /* идём посимвольно */
        foreach (var ch in myStr)
        {
            Console.WriteLine(ch);
        }

        /* можно так  */
        for (int i = 0; i < myStr.Length; i++)
        {
            Console.WriteLine(myStr[i]);
        }