Я пытаюсь написать код, чтобы изобразить все основные операции стека, но как только я скомпилирую свой код и запустил его. Он сразу же перестает работать.Как разрешить ошибку времени выполнения в этом C-коде?
У меня нет ошибки компиляции в моей IDE (CodeBlocks). Как узнать, что является ошибкой в моем коде?
Могу ли я также изменить настройки в CodeBlocks, чтобы также отображать такие ошибки времени выполнения?
Какая ошибка в моем коде ниже? Используется ли оператор стрелки (->) один за другим? Спасибо.
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *prev;
}node;
typedef struct stack
{
node *top;
}stack;
int count=0;
void push(stack *x, int num)
{
node *temp;
if(x->top == NULL)
{
temp=(node *)malloc(sizeof(node *));
temp->data=num;
temp->prev=NULL;
x->top=temp;
}
else
{
temp=(node *)malloc(sizeof(node *));
temp->data=num;
temp->prev=x->top;
x->top=temp;
}
count++;
return;
}
int pop(stack *x)
{
node *temp;
int m;
if(x->top == NULL)
{
printf("Error:The stack is empty\n");
return;
}
else
{
m=(x->top)->data;
temp=(x->top)->prev;
x->top=temp;
}
count--;
return m;
}
int main()
{
int k=1, n, num;
stack *myStack;
myStack->top = NULL;
while(k)
{
printf("Enter the operation you want to perform\n");
printf("1.PUSH\n");
printf("2.POP\n");
printf("3.TOP\n");
printf("4.STACK COUNT\n");
scanf("%d", &n);
switch(n)
{
case 1:
printf("Enter the number you want to push to the stack\n");
scanf("%d", &num);
push(myStack, num);
break;
case 2:
printf("The popped element is %d\n", pop(myStack));
break;
case 3:
printf("The topmost element of the stack is %d\n", (myStack->top)->data);
break;
case 4:
printf("The number of elements in the stack are %d\n", count);
break;
default:
printf("Invalid request\n");
break;
}
printf("Do you wish to perform another operation?(1/0)");
scanf("%d", &k);
}
return 0;
}
Вы устранения ошибок во время выполнения с помощью [отладки их] (https: // ericlippert. ком/2014/03/05 /, как в отладке-маленьких-программы /). Если причина ошибки неясна вам после того, как вы ее определили, задайте вопрос. – StoryTeller
"* Как можно разрешить ошибку времени выполнения в этом C-коде? *": Компилировать с помощью символов, запускать код внутри отладчика, чтобы отслеживать программу по очереди, проверяя значения соответствующих переменных, чтобы узнать, что действительно происходит , – alk
@alk Можете ли вы предложить какое-то приложение отладчика, которое я могу использовать для отладки кода C? –