Невозможно отладить - не удалось использовать стек - PullRequest
0 голосов
/ 10 ноября 2019

Я использовал стек, чтобы сделать что-то с таким символом, как код ниже. Когда я запускаю эту программу, она ничего не печатает. Я попытался отладить, но он имеет ошибку "программа получила сигнал SIGTRAP, trap / breakpoint trap". Пожалуйста, помогите. Tks за вашу помощь.

#include <stdio.h>
#include <stdlib.h>
short IsEmpty(int *top){
    if (*top==-1) return 1;
    return 0;
}
short IsFull(int *top, int capacity){
    if (*top == capacity) return 1;
    return 0;
}
void Push(int *top, int capacity, char *stack, char value){
    if (IsFull(top, capacity)==1) printf("stack overflow");
    else{
        ++*top;
        stack[*top]=value;
    }
}
void Pop(int *top, int capacity, char *stack){
    if (IsEmpty(top)==1) printf("stack underflow");
    else{
        free(stack[*top]);
        --*top;
    }
}

int main(){
    int top=-1;
    int capacity;
    printf("import capacity of stack: "); scanf("%d",&capacity);
    char *stack=(char *)malloc(capacity*sizeof(char));
    Push(&top, capacity, stack, 'A');
    Push(&top, capacity, stack, 'B');
    Push(&top, capacity, stack, 'C');
    Pop(&top, capacity, stack);
    Pop(&top, capacity, stack);
    Push(&top, capacity, stack, 'D');
    printf("%s",stack[1]);
    free(stack);
    return 0;
}

1 Ответ

1 голос
/ 10 ноября 2019

Если вы обнаружите, что не можете отладить, вы должны сделать две вещи:

  1. Убедитесь, что вы можете отлаживать другие существующие программы в вашей среде. Это исключит проблему со средой, а не с соответствующим кодом.

  2. Закомментируйте все, кроме нескольких строк вашей программы, чтобы она работала. Затем выборочно раскомментируйте строки, пока вы не изолируете проблему от конкретной строки.

Выделив проблему из одной строки, вы можете выполнить поиск в Интернете по конкретной проблеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...