Исправить ошибку выхода за пределы массива при шифровании текста - C#
Формулировка задачи:
подскажите почему возникает ошибки в коде
и как реализовать то что пользователь не может просматривать и изменять файл
подчеркнутой строки не должно быть
это возникает при шифровании
Листинг программы
- static void Encrypt(byte[] buf, int len, string pass)
- {
- int n = 0;
- for (int i = 0; i < len; i++)
- {
- buf[i] = (byte)(buf[i] ^ (byte)pass[n]);
- n++;
- if (n > pass.Length - 1) n = 0;
- }
- }
- static void Main(string[] args)
- {
- Random rnd = new Random();
- int score = 0;
- List<Score> scoreTable = ReadScores();
- Console.WriteLine("Введите имя пользователя");
- string nameUsers = Console.ReadLine();
- Score newScore = new Score();
- newScore.name = nameUsers;
- newScore.score = score;
- Console.WriteLine("Введите команду");
- string command = Console.ReadLine();
- if (command == "clear")
- {
- System.IO.File.Delete("scores.txt");
- System.IO.File.Create("scores.txt");
- return;
- }
- Console.Clear();
- int i = 0;
- for (i = 0; i < scoreTable.Count; i++)
- {
- if (scoreTable[i].name == nameUsers)
- {
- if (scoreTable[i].score < score)
- {
- scoreTable[i].score = score;
- }
- break;
- }
- }
- if (i == scoreTable.Count)
- {
- scoreTable.Add(newScore);
- }
- scoreTable.Sort(CompareScore);
- if (scoreTable.Count > 7)
- {
- scoreTable.RemoveRange(7, scoreTable.Count - 7);
- }
- DrawScores(scoreTable);
- SaveScores(scoreTable);
- string filenameIn = "scores.txt";
- string password = "1";
- FileStream f1 = new FileStream(filenameIn, FileMode.Open);
- byte[] buffer = new byte[8192];
- int bytesReaded = 0;
- long totalReaded = 0;
- long totalBytes = f1.Length;
- Console.Write("Завершено:");
- while ((bytesReaded = f1.Read(buffer, 0, 8192)) > 0)
- {
- Encrypt(buffer, bytesReaded, password);
- f1.Write(buffer, 0, bytesReaded);
- totalReaded += bytesReaded;
- long persent = totalReaded * 100 / totalBytes;
- Console.CursorLeft = 10;
- Console.Write("{0}%", persent);
- }
- f1.Close();
- Console.ReadKey();
- }
- private static List<Score> ReadScores()
- {
- string rawData = System.IO.File.ReadAllText("scores.txt");
- string[] parsedData;
- parsedData = rawData.Split(new string[] { " ", "\r\n" },
- StringSplitOptions.RemoveEmptyEntries);
- List<Score> scoreTable = new List<Score>();
- for (int i = 0; i < parsedData.Length; i += 2)
- {
- Score userScore = new Score();
- userScore.name = parsedData[i];
- userScore.score = Convert.ToInt32(parsedData[i + 1]);//ошибка "индекс находится вне границ массива" возникает периодически
- scoreTable.Add(userScore);
- }
- return scoreTable;
- }
Решение задачи: «Исправить ошибку выхода за пределы массива при шифровании текста»
textual
Листинг программы
- for (int i = 0; i < parsedData.Length-1; i += 2)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д