Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
#1

Нарушение прав доступа при записи по адресу - C++

16.06.2014, 23:24. Просмотров 1700. Ответов 4
Метки нет (Все метки)

Будьте добры подскажите, есть занятная функция которая подгружает из файлика данные,

Необработанное исключение по адресу 0x50C6BBC2 (msvcr120d.dll) в ТестЗадание.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00FBDBC0.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void AddTypesFromFile()
    {
        FILE * file;
        file = fopen("CarTypes.txt", "r");
        
 
        rewind(file);
        char tmp = 0;
        for (int i = 1; i < 10;i++)
        {
            
            fscanf(file, "%s\n", "%i ", "%i ", "%i ", "%i ", "%i ", "%i ", "%i\n", tmp, TruckCar[i].CargoCap, TruckCar[i].Loong, TruckCar[i].Wide, TruckCar[i].Hight, TruckCar[i].MaxCargoWi, TruckCar[i].MaxCargoHi, TypeTruck[i].countType);
            tmp = TypeTruck[i].type;
        } 
 
 
        fclose(file);
    }
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
 
 
 
using std::cout;
 
//Тут мы опишем "характеристики" грузовых автомобилей
/*
struct CarType 
{
    std::string type; //тип например А1, А2...
    int count; // кол-ство автомобилей заданого типа
    int CargoCap; //грузоподьемность , kg
    int loong; // Длина ,sm
    int Wide; // Ширина, sm
    int Hight; //Высота, sm
    int MaxCargoHi; //Максимальная высота груза
    int MaxCargoWi; //Максимальная ширина груза
    int FullMass; //  Общая масса
};
 
struct RampType
{
    int id; // Номер рампы в базе (системно задается автоматически)
    int RampWide; // Ширина рампы
    int CargoSqwLevel; //площадка для выгрузки грузов находится на уровне ... meters
    int WindowHi; //Высота окна выгрузки см
    int WindowWi; //Ширина окна выгрузки см
    int minRampWideCapac;
    int maxRampWideCapac; //
    int maxMass; // Максимальная масса принимаемого на рампе транспорта
};
*/
 
    class Car  // прародитель
    {
    public:
        Car()
        {
            
            
            CargoCap = 0;
            Loong = 0;
            Wide = 0;
            Hight = 0;
            MaxCargoHi = 0;
            MaxCargoWi = 0;
                    
            
        }
        Car(int CargoCap, int Loong, int Wide, int Hight, int MaxCargoHi,int MaxCargoWi)
        {
            Car::CargoCap =        CargoCap;
            Car::Loong =           Loong;
            Car::Wide =            Wide;
            Car::Hight =           Hight;
            Car::MaxCargoHi =      MaxCargoHi;
            Car::MaxCargoWi =      MaxCargoWi;
        }
        
        int CargoCap; //грузоподьемность , kg
        int Loong; // Длина ,sm
        int Wide; // Ширина, sm
        int Hight; //Высота, sm
        int MaxCargoHi; //Максимальная высота груза
        int MaxCargoWi; //Максимальная ширина груза
    };
     
    class Type : public Car
    {
    public:
        Type()//конструктор по умолчанию
        {
            Car::CargoCap = 0;
            Car::Loong = 0 ;
            Car::Wide = 0 ;
            Car::Hight = 0;
            Car::MaxCargoHi = 0;
            Car::MaxCargoWi = 0;
            Type::type = NULL;
            Type::countType = 0;
        }
        Type(char, int);
        char type; //тип например А1, А2...
        int countType; // кол-ство автомобилей заданого типа
 
    };
    Car TruckCar[10];
    Type TypeTruck[10];
 
    
    
    void addalltypes()
    {
        
        for (int i = 0; i < 9; i++)
        {
            TruckCar[i].CargoCap = 12;
            TruckCar[i].Loong = 12;
            TruckCar[i].Wide = 12;
            TruckCar[i].Hight = 12;
            TruckCar[i].MaxCargoHi = 21;
            TruckCar[i].MaxCargoWi = 23;
            printf("%s",TypeTruck[i].type);
            TypeTruck[i].countType = 88;
            
        }
    }
    void AddTypesFromFile()
    {
        FILE * file;
        file = fopen("CarTypes.txt", "r");
         //Количество доступных типов
         //Я простой счетчик i++
 
        rewind(file);
        char tmp = 0;
        for (int i = 1; i < 10;i++)
        {
            
            fscanf(file, "%s\n", "%i ", "%i ", "%i ", "%i ", "%i ", "%i ", "%i\n", tmp, TruckCar[i].CargoCap, TruckCar[i].Loong, TruckCar[i].Wide, TruckCar[i].Hight, TruckCar[i].MaxCargoWi, TruckCar[i].MaxCargoHi, TypeTruck[i].countType);
            tmp = TypeTruck[i].type;
        } 
 
 
        fclose(file);
    }
 
    void showall()
    {
        for (int i = 0; i < 9; i++)
        {
            cout << "Тип грузового автомобиля:";  printf("%s", TypeTruck[i].type); cout << std::endl;
            cout << "Грузоподьемность, кг:"                   <<TruckCar[i].CargoCap    << std::endl;
            cout << "Длинна ТС, см:"                          <<TruckCar[i].Loong       << std::endl;
            cout << "Ширина ТС, см:"                          <<TruckCar[i].Wide        << std::endl;
            cout << "Высота ТС, см:"                          <<TruckCar[i].Hight       << std::endl;
            cout << "Максимальная ШИРИНА груза, см:"          << TruckCar[i].MaxCargoWi << std::endl;
            cout << "Максимальная ВЫСОТА груза, см:"          <<TruckCar[i].MaxCargoHi  << std::endl;
            cout << "Количество ТС, с данными хар-ками:"      << TypeTruck[i].countType << std::endl;
        }
    }
 
 
    void main()
    {
        setlocale(LC_ALL, "rus");
        
        AddTypesFromFile();
        showall();
 
        system("pause");
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.06.2014, 23:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нарушение прав доступа при записи по адресу (C++):

Необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
вот само задание: Авиарейсы (номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест). Выбор по дате...

Исправить ошибку: необработанное исключение по адресу, нарушение прав доступа при записи по адресу - C++
Помогите, пожалуйста, исправит ошибку. Необработанное исключение по адресу 0x77D88E19 (ntdll.dll) в Lab11.exe: 0xC0000005: нарушение...

Нарушение прав доступа при записи по адресу - C++
Нужно просуммировать двухмерный динамический массив. Если я ввожу a1 &gt;= b1 то программа работает, а если ввожу a1&lt; b1 например 1,3...

Нарушение прав доступа при записи по адресу - C++
Форум предварительно прочитал, но нужной информации не нашел. :( Суть задания: заполнить с клавиатуры двухмерный массив из целых...

Нарушение прав доступа при записи по адресу - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; struct worker { char *fio; char *dolzh; ...

Нарушение прав доступа при записи по адресу - C++
Здрасте :) Такая задача, нужно генерировать 2d массив с входных параметров(размер). Я делаю так: Обьявление private:

4
IIARTEMII
20 / 20 / 3
Регистрация: 14.06.2012
Сообщений: 95
Завершенные тесты: 1
16.06.2014, 23:30 #2
Сразу хотелось бы спросить в силу лени: отладку делали? на какой строчке конкретно ругается? ускорит решение проблемы в сотни раз

Добавлено через 3 минуты
fscanf посмотрите, неверно параметры передаёте, там указатель требуется, а вы непосредственно значение кладёте
0
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
17.06.2014, 16:11  [ТС] #3
IIARTEMII, Так точно отладку делал, на сколько ее понимаю(понимаю мало)

Короче:


Первый этап обработки исключения по адресу 0x5198BBC2 (msvcr120d.dll) в ТестЗадание.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00FCDCA4.
Необработанное исключение по адресу 0x5198BBC2 (msvcr120d.dll) в ТестЗадание.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00FCDCA4.
0
zss
Модератор
Эксперт С++
6575 / 6137 / 2021
Регистрация: 18.12.2011
Сообщений: 15,992
Завершенные тесты: 1
17.06.2014, 16:20 #4
C++
1
2
3
4
5
6
7
8
char tmp[256];
for (int i = 1; i < 10;i++)
{
         fscanf(file, "%s\n", "%i ", "%i ", "%i ", "%i ", "%i ", "%i ", "%i\n", tmp,  
             &TruckCar[i].CargoCap, &TruckCar[i].Loong, &TruckCar[i].Wide, &TruckCar[i].Hight, 
             &TruckCar[i].MaxCargoWi, &TruckCar[i].MaxCargoHi, &TypeTruck[i].countType);
        strcpy(TypeTruck[i].type,tmp);
}
И еще в объявлении класса
C++
1
 char type[256]; //тип например А1, А2...
1
Outmee
2 / 2 / 0
Регистрация: 26.01.2014
Сообщений: 59
Завершенные тесты: 1
17.06.2014, 22:49  [ТС] #5
zss, с эмперсантами я уже сам наковырял, а за создание tmp - Благодарю, мог бы но бился бы как олень рогами об пол но не заводил лишнюю переменную
0
17.06.2014, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2014, 22:49
Привет! Вот еще темы с ответами:

Нарушение прав доступа при записи по адресу - C++
Как исправить ошибку?? Первый этап обработки исключения по адресу 0x0F484AF5 (msvcr110d.dll) в ConsoleApplication16.exe: 0xC0000005:...

Нарушение прав доступа при записи по адресу - C++
Функция не дописана. Исключение находит в этой begin-&gt;elem.arrint = s; нарушение прав доступа при записи по адресу 0xCDCDCDCD. Работаю...

Нарушение прав доступа при записи по адресу 0xCDCDCDCD - C++
возникла такая вот ошибка: Вызвано исключение по адресу 0x0F2C398A (sfml-graphics-d-2.dll) в JustPlatformer.exe: 0xC0000005: нарушение...

Нарушение прав доступа при записи по адресу 0xCDCDCDCD - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; using namespace std; void create(int**, int, int); void tp(int **, int, int **, int); ...


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

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

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