Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
andreyko5757
0 / 0 / 0
Регистрация: 19.01.2016
Сообщений: 7
1

Переполнение массива. Run-Time Check Failure #2

08.05.2017, 15:24. Просмотров 245. Ответов 4
Метки нет (Все метки)

Добрый день.
Я написал программу поиска всех циклов в ориентированном графе, но у меня ошибка "Run-Time Check Failure #2 - Stack around the variable 'q' was corrupted." Где то в фунции seekCykle. Смотрел пошагово но не увидел ошибки . Помогите пожалуйста
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define N 5
 
 
int seek;
typedef struct GRAF
{
    int inf;
    struct GRAF *next;
}graf;
graf v[N]={NULL};
 
int addElem(int pvs, int pve);
int myf (int first,int curr,char s[256]);
void seekCykle ();
void printGr();
char *IntToStr(char *s, int p);
int main (void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
     addElem(1, 3);
    addElem(2, 1);
    addElem(3, 2);
    addElem(3, 4);
    addElem(3, 5);
    addElem(4, 1);
    addElem(4, 2);
    addElem(5, 1);
    addElem(5, 2);
    addElem(5, 4);
    printGr();
    seekCykle();
    
    system("pause");
    return 0;
}
 
 
 
int addElem(int pvs, int pve)
{
        
    graf *p,*p1,*l=NULL;
    p=(graf*)malloc(sizeof(graf));
    p1=(graf*)malloc(sizeof(graf));
        
    
 
    p->inf=pve;
    p->next=NULL;
    p1=&v[pvs-1];
    if (p->next==NULL)
    if (p1->inf==0) v[pvs-1]=*p; 
    else
    {
        while (p1->next != NULL)
          p1=p1->next;
        p1->next=p;
    }
    
    return 0;
}
 
int myf (int first,int curr,char *s)
{
    GRAF *p; 
    char q[2];
    int i=0;
    if ( s[0]!='\0' )
    {
        char *vk=s;
        int f=0;
        while (*vk!='\0')
        {
            if (*vk==curr+48) f=1;
            vk++;
        }
        if (f==1)
        {
            printf("%s\n",s);
            while (*(s+i)!='\0') i++;
            *(s+i-2)='\0';
            return 0;
        }
    }
    p=v+curr-1;
    while (p!=NULL)
    {       
        
        q[0]=curr+48;
        q[1]='\0';
        strcat(s,q);
        strcat(s," ");
        myf (first,p->inf, s);
        p=p->next;
    }
 
    while (*(s+i)!='\0') i++;
        *(s+i-2)='\0';
    
}
 
 
void seekCykle ()
{
    int i;
    char q[500]="";
    for (i=1;i<=N;i++)
    {
 
//      strcpy(q,q2);
        myf(i,i,q);     
        printf("\n");
    }
 
}
 
 
void printGr()
{
 
    graf *p;
    int i;
 
    for (i=0;i<N;i++)
    {
        p= v+i;
        printf("%d : ",i+1);
        while(p != NULL) 
        {
            printf ("%d ",p->inf);
            p=p->next;
        }
        printf("\n");
    }
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2017, 15:24
Ответы с готовыми решениями:

Run-Time Check Failure #2 - Stack around the variable 'y' was corrupted
Даны два строго упорядоченных по возрастанию массива X и Y из n элементов каждый. В массиве X найти...

Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted
Выдает ошибку &quot;Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.&quot;...

Run-Time Check Failure #2 - Stack around the variable '_continue_value' was corrupted
Пишу в VS 2015 и после запуска в конце появляется предупреждение Run-Time Check Failure #2 - Stack...

Run-Time Check Failure #2 - Stack around the variable 'dht' was corrupted
Всем доброго времени суток! Недавно начал программировать на C в среде Microsoft Visual C++....

Ошибка Run-Time Check Failure #2 - Stack around the variable 'tmp' was corrupted
Вот функция где она возникает, validatino - функция проверки на корректность ввода , ...

4
likehood
984 / 828 / 396
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
08.05.2017, 18:39 2
Цитата Сообщение от andreyko5757 Посмотреть сообщение
Где то в фунции seekCykle
Вероятно, ошибка не в самой функции seekCykle, а где-то в функции myf. Надо внимательно посмотреть, нет ли в ней выхода за границы массива q. Ещё можно увеличить размер массива и посмотреть, не исчезнет ли ошибка.
0
andreyko5757
0 / 0 / 0
Регистрация: 19.01.2016
Сообщений: 7
08.05.2017, 19:14  [ТС] 3
Цитата Сообщение от likehood Посмотреть сообщение
Ещё можно увеличить размер массива
Даже когда размер массива увеличил до 10 000 проблема не решилась. Хотя размер массива при этих входных данных должен был быть меньше 20
0
likehood
984 / 828 / 396
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
08.05.2017, 19:19 4
А может там бесконечная рекурсия получается? Поэтому и массив переполняется.
Можно добавить проверку индекса в тех местах, где производится чтение/запись массива q.
0
andreyko5757
0 / 0 / 0
Регистрация: 19.01.2016
Сообщений: 7
08.05.2017, 19:57  [ТС] 5
Я пошагово смотрел на выполнение программы. Там нет бесконечной рекурсии. Не знаю в чем может быть проблема.
Уже несколько дней сижу над этим вопросом. Но опыта в таких задачах почти нет.
0
08.05.2017, 19:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2017, 19:57

Run-Time Check Failure #2 - Stack around the variable 'after' was corrupted при обращении к символу
Здравствуйте!!!Программа работает вроде бы правильно,но после отработки программы Я сталкиваюсь с...

Считывание данных из файла. Run-time check failure #2 variable "i"
Результат выдает верный, но выскакивает эта ошибка. #include &lt;stdio.h&gt; main(void) { FILE...

Ошибка при вставке элемента в массив: "Run-Time Check Failure #2-Stack around the variable 'x' was corrupted."
Задача: Задан массив размерностью 10. Ввести число, которое необходимо записать под 5-им индексом,...


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

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

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