C#: чтение текстового файла в массив двумерных символов - PullRequest
0 голосов
/ 27 марта 2020

Как я уже упоминал выше, я пытаюсь прочитать текстовый файл в массив двухмерных символов. Это мой файл:

abcde
fghij
klmno
pqrst
uvwxy

, и это мой код:

var path = @"C:text.file";
        StreamReader sr = File.OpenText(path);
        {



            char[,] arr = new char[5, 5];

            for (int i = 0; i < 5; i++)
              {
                  for (int j = 0; j < 5; j++)
                  {
                    arr[i, j] = (Char)sr.Read();
                   Console.WriteLine(arr[i, j] + " = {0},{1}", i,j);
                  }
              }

            Console.WriteLine(arr[2,1]);
        }
    }

и, по крайней мере, мой вывод:

1 = 0,0
2 = 0,1
3 = 0,2
4 = 0,3
5 = 0,4
 = 1,0

 = 1,1
6 = 1,2
7 = 1,3
8 = 1,4
9 = 2,0
0 = 2,1
 = 2,2
...

поэтому мой вопрос, почему, например, arr [1,0] или arr [1,1] пусто?

спасибо за помощь! sno0z3

1 Ответ

1 голос
/ 27 марта 2020

Проблема вызвана наличием новой строки в конце каждой строки (а новая строка состоит из двух символов в текстовом файле Windows).
Таким образом, вы можете проверить эти символы перед добавлением в ваш массив, или просто прочитайте строку (таким образом удаляя символ новой строки), а затем l oop поверх полученной строки, извлекая char из char и добавляя их в ваш массив

char[,] arr = new char[5, 5];

for (int i = 0; i < 5; i++)
{
   string curLine = sr.ReadLine();
   for (int j = 0; j < curLine.Length; j++)
   {
      arr[i, j] = curLine[j];
      Console.WriteLine(arr[i, j] + " = {0},{1}", i,j);
   }
}
...