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

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

28.12.2020, 15:18. Просмотров 1488. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2020, 15:18
Ответы с готовыми решениями:

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

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

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

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

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

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  [ТС] 5
да что-то я тупанул немного, только изучаю, спасибо за ответ)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2020, 17:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Вызвано исключение по адресу 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;...

Вызвано исключение: нарушение доступа для записи. current было 0xCDCDCDCD
#include &lt;iostream&gt; #include &lt;windows.h&gt; #include &lt;string&gt; #include &lt;fstream&gt; using...

Ошибка: Вызвано исключение: нарушение доступа для записи. this было 0xF1EAE5EB
Помогите пожалуйста. При запуске вылетает и открывается файл xutilyti. Там выскакивает ошибка...


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

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

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