0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 29
1

Project project.exe raised exception class EAccessViolation with message"Access violation at address 326025AF

20.06.2019, 11:33. Показов 1513. Ответов 5
Метки нет (Все метки)

Программа билдится, запускается, проходить все функции и операторы, но в конце (там где getch() я нажимаю любую кнопку чтобы закрыть консоль и вылетает ошибка(скрин 1) и открывается новый лист с непонятным мне кодом(скрин 2).
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
#include <iostream>
#include <string>
#include <windows.h>
#include <conio.h>
using namespace std;
 
void ce()
{
    cout << endl;
}
 
void print(int n, int m, string g[][100])
{
    cout << "Массив строк до обработки"; ce(); ce();
    for (int i = 0; i < n; i++)
    {
        printf("g[%d] -", i);
        for (int j = 0; j < m; j++)
        {
            printf("%3s", &g[i][j]);
        }
        ce();
    }
        ce();
}
 
void input(int n, int m, string g[][100])
{
    printf("Введите элементы массива:\n");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            printf("g[%d][%d] = ", i, j); scanf("%s", &g[i][j]);
        }
    }
        ce();
    print(n, m, g);
}
 
void chouse(int n, int m, string g[][100])
{
    int h;
    printf("Выберете строку которую хотите добавить: "); scanf("%d", &h); ce();
    if (h >= 0, h < n)
    {
        printf("Массив после обработки:\n");
        for (int i = 0; i < n; i++)
        {
            printf("g[%d] -", i);
            for (int j = 0; j < m; j++)
            {
                printf("%3s", &g[i][j]);
            }
            ce();
        }   
        printf("g[%d] -", n);
        for (int j = 0; j < m; j++)
        {
            printf("%3s", &g[h][j]);
        }       
    }
    else
    {
        printf("Вы выбрали не существующий номер строки, всего в массиве %d строк, выбирайте номер строки в промежутке от 0 до %d", n, n - 1);
    }
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    string g[100][100];
    int n, m;
    cout << "Количество строк:  "; cin >> n;
    cout << "Количество столбцов:  "; cin >> m; ce();
    input(n, m, g);
    chouse(n, m, g);
    getch();
}
Миниатюры
Project project.exe raised exception class EAccessViolation with message"Access violation at address 326025AF   Project project.exe raised exception class EAccessViolation with message"Access violation at address 326025AF   Project project.exe raised exception class EAccessViolation with message"Access violation at address 326025AF  

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2019, 11:33
Ответы с готовыми решениями:

Ошибка raised exception class EAccessViolation with message 'Access violation at address 004011FA
Выдает ошибку raised exception class EAccessViolation with message 'Access violation at address...

First chance exception at $77ADB09E. Exception class EAccessViolation with message 'Access Violation'. Process
Объясните в каких случаях возникает эта ошибка, из-за чего? Как справиться с этой ошибкой? Только...

Project raised exception class EConvertError
Вот такая ошибка: Project Project1.exe raised exception class EConvertError with message &quot;2.1&quot; is...

Project Hotel.exe raised exception class EAccessViolation with message"Access violation at address 007B90DA
будет много букв \ сорян При Запуске выходит такая ошибка Project Hotel.exe raised exception...

5
6740 / 4538 / 1840
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
20.06.2019, 11:48 2
Лучший ответ Сообщение было отмечено Yan Nekrasov как решение

Решение

Цитата Сообщение от Yan Nekrasov Посмотреть сообщение
Программа билдится, запускается, проходить все функции и операторы, но в конце (там где getch() я нажимаю любую кнопку чтобы закрыть консоль и вылетает ошибка(скрин 1) и открывается новый лист с непонятным мне кодом(скрин 2).
Нельзя делать scanf для std::string. Сделай std::cin >> g[i][j]
Цитата Сообщение от Yan Nekrasov Посмотреть сообщение
printf("g[%d][%d] = ", i, j); scanf("%s", &g[i][j]);
Добавлено через 4 минуты
Цитата Сообщение от Yan Nekrasov Посмотреть сообщение
printf("%3s", &g[i][j]);
Здесь и далее надо printf("%3s", g[i][j].c_str());

Добавлено через 15 секунд
Цитата Сообщение от Yan Nekrasov Посмотреть сообщение
printf("%3s", &g[i][j]);
Здесь и далее надо printf("%3s", g[i][j].c_str());
1
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 29
20.06.2019, 12:00  [ТС] 3
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
c_str());
У меня и без этого заработало
0
15261 / 8228 / 1993
Регистрация: 30.01.2014
Сообщений: 14,010
20.06.2019, 12:07 4
Цитата Сообщение от Yan Nekrasov Посмотреть сообщение
У меня и без этого заработало
Но ведь когда оно сломается, вы снова придете на форум и будете тратить свое время.
Может быть сразу сделать нормально, нет?
0
0 / 0 / 0
Регистрация: 03.04.2019
Сообщений: 29
20.06.2019, 12:15  [ТС] 5
DrOffset,
А мне вообще нужна эта строчка?
C++
1
using namespace std;
0
15261 / 8228 / 1993
Регистрация: 30.01.2014
Сообщений: 14,010
20.06.2019, 12:27 6
Yan Nekrasov, а при чем тут она? Вроде пока обсуждаем вашу грубую ошибку с взятием адреса объекта string и передачей его в printf, с которой, тем не менее, у вас код работает (из-за того, что строки у вас короткие, а std::string использует оптимизацию коротких строк и сохраняет их непосредственно в объекте). Как только вы увеличите свои строки хотя бы символов на 10, то сразу же код перестанет работать правильно.

using namespace std; можно не писать, вместо этого явно указывать std:: перед сущностями из стандартной библиотеки (например std::string вместо string).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2019, 12:27

Project Incassaciya.exe raised exception class EAccessViolation with message 'Access violation at address
Помогите пожалуйста. При запуске программы вылезает ошибка: Project Incassaciya.exe raised...

Ошибка: Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address
Работаю с файлом *.xls через OpenOffice Calc. На форме 2 элемента RadioButton1 и RadioButton2. Если...

Project Project2.exe raised exception class EAccessViolation with message 'Access violation at address 00467ECA in modul
Впервые решил обратится сюда,вообщем проблема пустяковая Суть в том что нужно в делфи подгрузить...

Project raised exception class eaccessviolation with message 'access violation at address
Запускаю проект(информационно поисковая система), хорошо запускается, там есть кнопки(добавить...


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

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

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