Форум программистов, компьютерный форум CyberForum.ru

Ошибка "Попытка чтения в запрещенную память" при работе с файлами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Связные списки. Определить количество узлов между двумя выбранными указателями http://www.cyberforum.ru/cpp-beginners/thread1178373.html
#include <iostream> #include <cstdlib> using namespace std; struct Node { int data; Node* next;
C++ Remove_if для std::list Здравствуйте! Помогите мне разобраться,пожалуйста.Перечитал кучу всего,но так и не понял ,что можно писать в аргументе метода remove_if. #include<iostream> #include<list> #include<algorithm> using namespace std; void printlist(list<int> a) { copy(a.begin(),a.end(),ostream_iterator<int>(cout," ")); } http://www.cyberforum.ru/cpp-beginners/thread1178352.html
C++ Как считать n-ое слово в строке
Как найти любое (n-ное) слово в строке? Слова(группа слов) разделяются запятыми
Перенос из directx8 в directx9, ошибка в SetVertexShader C++
Доброе время суток. Есть кусок кода написанного для directx8 #include <d3dx8.h> #include <mmsystem.h> #include <C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\WinNT.h> #include <d3dx8mesh.h> #include <Windows.h> #include "C:\Program Files (x86)\Microsoft DirectX SDK (August 2009)\Include\dinput.h"
C++ Переставить элементы в этом массиве http://www.cyberforum.ru/cpp-beginners/thread1178318.html
Ввести массив чисел с задаваемым количеством элементов и некоторое число. Без использования другого массива переставить элементы в этом массиве так, чтобы в начале массива оказались элементы не меньше некоторого числа, а в конце массива - элементы меньше этого числа, с сохранением порядка их взаимного расположения в исходном массиве. Вывести преобразованный массив. Пример вводимых данных: 8...
C++ Описать структуру "Сотрудник" Описать следующую структуру Сотрудник Ф.И.О Дата поступления с вариантной частью записи: Студент Сотрудник Другое Средний балл Личный номер подробнее

Показать сообщение отдельно
TheStigger
0 / 0 / 0
Регистрация: 16.05.2014
Сообщений: 14
17.05.2014, 02:24  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Коды разные, и одна и таже ошибка может быть по разным поводам. В этой функции ошибка возникает? В какой строке?
Ошибка появлялась сразу после выхода из функции.

Сейчас структуру переделал под char и избавился от строк. Но теперь переменные почему-то ничего не возвращают, а в строке 36 ошибка: выражение должно быть допустимым для изменения левосторонним значением

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
29
30
31
32
33
34
35
36
37
38
void ImportFromFile(organizer note[N])
    {
        organizer buff[N];
        FILE  *fp;
        register int i;
 
        if ((fp = fopen("cash", "rb")) == NULL) {
            MessageBox::Show("Error while opening the file.\n");
            return;
        }
        for (int j = 0; j < N; j++)
        {
            buff[j].text[0] = '\0';
        }
        for (i = 0;; i++)
            if (fread(&buff[i], sizeof(struct organizer), 1, fp) == 1)
            {
                break;
            }
            else
            {
                if (feof(fp)) break;
                MessageBox::Show("Error while reading the file.\n");
            }
            stringstream ss;
            string s;
            ss << note[0].text;
            ss >> s;
            String^ sys_str = gcnew String(s.c_str());
            MessageBox::Show("test input " +sys_str);
            ss << buff[i].text;
            ss >> s;
            sys_str = gcnew String(s.c_str());
            MessageBox::Show("test input " + sys_str);
            //MessageBox::Show("test input "+note[0].text+"    "+buff[i].text);
        //note[0].text = buff[i].text;
        fclose(fp);
    }
Добавлено через 8 минут
Цитата Сообщение от DU Посмотреть сообщение
note[0].text = buff[i].text;
этот код выполняется вне тела цикла. в этом месте i может превышать размер массива buff.
так же это может случится и в строке 16. что отладчик говорит? какие там у вас индексы?
Исправил и при присваивании написал (i-1). Вообще да, там может быть выход за диапазон, но по идее если я записал туда 1 запись, то при считывании индекс i тоже должен быть единице, так что в моих условиях там не должно быть никакого выхода за диапазон
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru