Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Flaze
1 / 1 / 1
Регистрация: 27.05.2013
Сообщений: 160
1

Байтовые файлы. Индекс находился вне границ массива

03.12.2014, 22:38. Просмотров 837. Ответов 8
Метки нет (Все метки)

Пытаюсь строку full записать в байтовый файл (сначала конвертировав её в массив char, затем каждый символ конвертировав в байт. Выдает ошибку: "Индекс находился вне границ массива". Помогите плз, где я размеры неправильно указал?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 FileStream f = new FileStream("File.txt", FileMode.Create, FileAccess.ReadWrite);
            Console.WriteLine("Введите ФИО");
            string fio = Console.ReadLine();
            Console.WriteLine("Введите год в формате ####");
            int god = Convert.ToInt32(Console.ReadLine());
            int pl = 2014 - god;
            string notfull = (Convert.ToString(god)).Insert(0, fio + " родился в ");
            string full = notfull.Insert(notfull.Length, " году");
            Console.WriteLine(full);
            char[] c = full.ToCharArray();
            byte[] x = new byte[full.Length];
            for (int i = 0; i <= c.Length; i++)
            {
                x[i] = (byte)(c[i]);
                f.Write(x, 0, full.Length);
                f.WriteByte(x[i]);               
            }
            f.Close();
            Console.ReadKey();
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2014, 22:38
Ответы с готовыми решениями:

Индекс находился вне границ массива
Помогите плиз, не могу понять что не так. Выдаёт ошибку: Индекс находился вне...

Индекс находился вне границ массива
WebClient client = new WebClient(); client.Headers =...

Индекс находился вне границ массива
Доброго времени суток. Подскажите почему выходит за границы, пожалуйста. ...

Индекс находился вне границ массива
Не могу понять почему Индекс находился вне границ массива. (&quot;Index was outside...

Индекс находился вне границ массива
Всем доброго времени суток! Дали задание переписать из delphi в c# курсовой...

8
insite2012
Модератор
Эксперт .NET
4862 / 3815 / 1096
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
03.12.2014, 22:40 2
Лучший ответ Сообщение было отмечено Flaze как решение

Решение

Цитата Сообщение от Flaze Посмотреть сообщение
(сначала конвертировав её в массив char, затем каждый символ конвертировав в байт.
Мсье знает толк в извращениях)))

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
 
namespace ConsoleApplication63 {
    class Program {
        static void Main(string[] args) {
            string s = "Кто-то родился в каком-то году";
            byte[] data = Encoding.Unicode.GetBytes(s);
            using (Stream fs = File.OpenWrite(@"C:\data.bin")) {
                fs.Write(data, 0, data.Length);
            }
        }
    }
}
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
03.12.2014, 22:41 3
Length-1 в цикле.
C#
1
for (int i = 0; i <= c.Length-1; i++)
1
Flaze
1 / 1 / 1
Регистрация: 27.05.2013
Сообщений: 160
03.12.2014, 22:43  [ТС] 4
Цитата Сообщение от insite2012 Посмотреть сообщение
Мсье знает толк в извращениях)))
подскажите способ лучше я всего-лишь в процессе "покорения" файлов, да и в целом c#.

Добавлено через 1 минуту
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Length-1 в цикле.
Сэнк'с, помогло
0
insite2012
Модератор
Эксперт .NET
4862 / 3815 / 1096
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
03.12.2014, 22:47 5
Цитата Сообщение от Flaze Посмотреть сообщение
подскажите способ лучше
Подредактировал пост. Смотрите)))
1
Flaze
1 / 1 / 1
Регистрация: 27.05.2013
Сообщений: 160
03.12.2014, 22:56  [ТС] 6
Цитата Сообщение от insite2012 Посмотреть сообщение
Подредактировал пост. Смотрите)))
Спасибо)
0
insite2012
Модератор
Эксперт .NET
4862 / 3815 / 1096
Регистрация: 12.10.2013
Сообщений: 11,096
Записей в блоге: 2
03.12.2014, 23:20 7
Вот пример с записью и обратным чтением.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
 
namespace ConsoleApplication63 {
    class Program {
        static void Main(string[] args) {
            string s = "Кто-то родился в каком-то году";
            byte[] data = Encoding.Unicode.GetBytes(s);
            using (Stream fs = File.OpenWrite(@"C:\data.bin")) {
                fs.Write(data, 0, data.Length);
            }
 
            byte[] dataFromFile = new byte[data.Length];
            string stringFromFile = string.Empty;
 
            using (Stream fs = File.OpenRead(@"C:\data.bin")) {
                fs.Read(dataFromFile, 0, dataFromFile.Length);
                stringFromFile = Encoding.Unicode.GetString(dataFromFile);
            }
            Console.WriteLine(stringFromFile);
            Console.ReadLine();
        }
    }
}
0
Flaze
1 / 1 / 1
Регистрация: 27.05.2013
Сообщений: 160
03.12.2014, 23:21  [ТС] 8
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Length-1 в цикле.
даже лучше "<=" заменить на "<"
0
ntlinuxnt
$ su
1598 / 513 / 97
Регистрация: 18.11.2010
Сообщений: 2,805
Записей в блоге: 2
Завершенные тесты: 5
03.12.2014, 23:23 9
Цитата Сообщение от Flaze Посмотреть сообщение
даже лучше "<=" заменить на "<"
что первое в голову пришло то и написал.
0
03.12.2014, 23:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2014, 23:23

Индекс находился вне границ массива
Console.WriteLine(&quot;Адрес - &quot; + k.Adr); выдает ошибку Необработанное исключение...

Индекс находился вне границ массива
Индекс находился вне границ массива private void button1_Click(object...

Индекс находился вне границ массива
Индекс находился вне границ массива. Как исправить? Visual Studio говорит о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru