После чтение файла происходит сложение значений из файла, на выход неожидаемый результат, почуем?

class Program
    {
        static void Main(string[] args)
        {

            string name_inp_f = "input.txt";
            double c1 = 0;
            double c2 = 0;
            ;

            FileStream inp_f = new FileStream(name_inp_f, FileMode.Open);

            StreamReader reader_f = new StreamReader(inp_f);

            while (reader_f.Peek() != -1)
            {
                char c = (char)reader_f.Read();
                c1 = Convert.ToInt32(c);          
                c = (char)reader_f.Read();
                c2 = Convert.ToInt32(c);
            }

            c1 += c2;
            Console.WriteLine(c1);
            Console.ReadKey();

        }
    }

В файле есть цифра 1 и 3 (между 1 и 3 есть пробел) . ожидалось, что программа прочитает их и поместит в переменные С1 и С2. после должно произойти сложение и вывести результат на консоль. Но в итоге вместо 4 я получаю 65589. Почему? (Цель всего этого, понять как работать с фалами и их нюансы)
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
@cicatrix
было бы большой ошибкой думать
StreamReader по умолчанию открывает файл в кодировке UTF-8 и считает, что в одном символе 2 байта.
Вам явно указывать кодировку файла в инициализации StreamReader.
И вообще, хорошей практикой будет считать строку (ReadLine), потом уже производить её разбор.
И, как я уже указал в комментарии, приведение Char к Int32 вернёт код символа, а не строковое значение.
Для того, чтобы превратить символ "3" в число 3 надо пользоваться методом Parse.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы