Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9

Вызвано исключение: нарушение доступа для записи. **c2** было 0x1A80112

28.12.2020, 15:18. Показов 2267. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ошибка на строке c1[n] = c1[k]; в void copy
пример работы программы vvedite stroku: {qqq{www{eee{{}}r}t}. Результат eeerwwwrt{qqq БЕЗ ╠
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
#include <stdio.h>
 
int find(char c[]){
    int i, b;// i - индекс в строке, b - индекс максимальной {
    for (i = 0, b = -1; c[i] != 0; i++)
    {
        if (c[i] == '}')
            return b;
        if (c[i] == '{')
            b = i;
    }
    return b;
}
 
void copy(char c1[], char c2[]){
    int i = 0;// Индекс в выходной строке
    int k, n, m;//k - индекс найденного фрагмента, n -  запоминание начала фрагмента, m - счётчик фрагментов
    k = find(c1);
    for (m = 1; k != -1; m++)// Пока есть фрагменты
    {
        for (n = k; c1[k] != '}'; k++, i++)// Переписать фрагмент и его "}"
            c2[i] = c1[k];
        c2[i++] = c1[k++];
        for (c1[k] != 0; k++, n++;)
            c1[n] = c1[k];
        c1[n] = 0;         // сдвинуть " хвост" к началу
        k = find(c1);
    }     
    for (k = 0; c1[k] != 0; k++, i++)// Перенести остаток входной строки
        c2[i] = c1[k];
    i++;
    c2[i] = '\0';
}
 
void F(char c3[]){
    char z = '}';// Удаление из строки всех вхождений символа }
    int i = 0;// Индекс для исходной строки
    int j = i;// Индекс для модифицированной строки
    // Цикл модификации исходной строки
    while (c3[i] != 0)// Пока в строке не нулевой байт
    {
        // Проверить текущий символ строки
        if (c3[i] != z)// Если c[i] не равен }
        // Переписать текущий символ строки по новому индексу j и увеличить индекс j единицу
            c3[j++] = c3[i];
        i++;
    }
    c3[j] = '\0';
}
 
void F2(char c3[]){
    char z = '{';// Удаление из строки всех вхождений символа {
    int i = 0;// Индекс для исходной строки
    int j = i;// Индекс для модифицированной строки
    // Цикл модификации исходной строки
    while (c3[i] != 0)// Пока в строке не нулевой байт
    {
        // Проверить текущий символ строки
        if (c3[i] != z)// Если c[i] не равен {
        // Переписать текущий символ строки по новому индексу j и увеличить индекс j единицу
            c3[j++] = c3[i];
        i++;
    }
    c3[j] = '\0';// Запись нулевого байта в конец модифицированной строки
}
 
int main() {
    char a[80], d[80];
    printf("vvedite stroku:\n");
    gets(a);
    copy(a, d);
    F(d);
    F2(d);
    printf("result %s\n", d);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.12.2020, 15:18
Ответы с готовыми решениями:

Вызвано исключение: нарушение доступа для записи. str было 0x15B7C69. Не работает программа Си
// НУЖНО СДЕЛАТЬ РЕВЕРС КАЖДОГО ИЗ ЭТИХ ПРЕДЛОЖЕНИЙ #include &lt;stdio.h&gt; #include &lt;stdarg.h&gt; #include &lt;string.h&gt; void...

Вызвано исключение: нарушение доступа для чтения. p было 0x1110113
В функциях постоянно выдает ошибку чтения (первую ошибку выдает в 42ой строке) #include &lt;stdio.h&gt; //подключаем библиотеки ...

Вызвано исключение: нарушение доступа для чтения. tmp было 0x2
Возникла проблема с удалением первого элемента списка. Вылезает такая ошибка: &quot;Вызвано исключение: нарушение доступа для чтения. tmp...

4
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,121
28.12.2020, 17:13
Ринад, проверь на выход за границу массива
0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
28.12.2020, 17:14  [ТС]
забыл переменные здесь инициализировать for (n, k ; c1[k] != 0; k++, n++)
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,121
28.12.2020, 17:16
и вообще такое ощущение, что вот тут перепутано

for (c1[k] != 0; k++, n++;)
->
for (;c1[k] != 0; k++, n++)

Добавлено через 1 минуту
Ринад, а про отладчик в курсе? Не лень было тему создавать, когда отладчик это всё быстрее покажет?
0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
28.12.2020, 17:18  [ТС]
да что-то я тупанул немного, только изучаю, спасибо за ответ)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.12.2020, 17:18
Помогаю со студенческими работами здесь

Вызвано необработанное исключение: нарушение доступа для чтения. current было nullptr
Здравствуйте. Возникла такая ошибка, не могу её решить. Пожалуйста, помогите указать, что я сделал не так или что не учёл, а может и её...

Вызвано необработанное исключение: нарушение доступа для записи
// Str.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;cstring&gt; char...

Вызвано исключение по адресу 0x75DD9845 (ucrtbase.dll) в LABA4.exe: 0xC0000005: нарушение прав доступа при записи по адр
Объясните пожалуйста, почему не работает программа? ( Выдает &quot;вызвано исключение...&quot; По идее она должна считывать из консоли массив...

Вызвано исключение: нарушение доступа для записи. . было 0xCCCCCCCC
Знающие люди, объясните как при помощи структур реализовать данную функцию. Как я понял, элементы массива записываются, а индексы не могут...

Вызвано исключение: нарушение доступа для записи. pp1 было nullptr
int main() { setlocale(LC_ALL, &quot;russian&quot;); fstream t(&quot;t.txt&quot;); string s; int j = 0; while (getline(t, s))...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru