gpt4 book ai didi

C - 在 while 中获取 char 并压入堆栈

转载 作者:太空宇宙 更新时间:2023-11-04 01:43:41 25 4
gpt4 key购买 nike

我正在尝试根据用户输入创建堆栈。为了停止插入字符,我要求用户输入 c。当用户输入 c 时,我收到一条错误消息:Run-Time Check Failure #2 - Stack around the variable 'stack' was corrupted.

这是我的代码:

#define N 10

typedef char stackType;
typedef struct {
int top;
stackType S[N];
} stack;

void createStack(stack *ps) {
ps->top = -1;
}

int push(stackType data, stack *ps) {
if (ps->top < N - 1) {
ps->top++;
ps->S[ps->top] = data;
return 1;
}
return 0;
}

void Ex01() {
stack *stack;
createStack(&stack);
char input;
printf("Please enter letters. Enter 'c' top stop:\n");
scanf(" %c", &input);
while (input != 'c') {
push(input, &stack);
scanf(" %c", &input);
}
}

int main() {
Ex01();
}

最佳答案

如果要使用语句

createStack(&stack);

那么 stack 应该声明为 stack stack 而没有 *

这样它就会被分配到你程序的堆栈上。

stack *stack 中,您将未初始化的指针传递给 createStack 函数,这可能会导致您的程序崩溃。

如果您仍想使用 stack *stack,则必须为该指针动态分配内存,即使用 malloc

关于C - 在 while 中获取 char 并压入堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58023090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com