【发布时间】:2014-09-10 15:58:05
【问题描述】:
我正在尝试确保我的初始化堆栈函数是否获取用户输入的所有值,但现在我的代码打印出与我输入的原始值不同的值。我用了。另外,我正在研究与堆栈一起使用的不同功能,例如弹出、推送、进入堆栈顶部等。它会在 do while 循环中工作吗?不过这里是初始化栈函数
typedef struct stack
{
int* darr;
int size;
int top;
}stack;
stack * initStack(int elements)
{
stack *s;
s = (stack *)malloc(sizeof(stack));
s->darr = (int *)malloc(sizeof(int)*elements);
s->size = 0;
s->top = elements;
return s;
}
在主()中
int main()
{
stack s;
int i;
printf("Hello user, please enter 10 different values to build your stack: \n");
for(i = 0; i < 10; i++)
{
scanf("%d", initStack(i));
}
printf("\nYou entered: \n%d\n\n", initStack(i));
return 0;
}
【问题讨论】:
-
有太多东西需要改变:分配(分配 10 个堆栈,为空),将整数扫描到结构中,打印垃圾(因为分配了新堆栈并返回)无论如何,您要求 printf 许多整数,但您传递了一个 stack* 值。使用 stack* pStack = initstack(10) 和 printf/scanf 调用一次 initstack 到 pStack->darr...
-
您对
scanf和printf的使用不正确。阅读一两个关于如何使用它们的教程会很有帮助。这是一个首发。 codingunit.com/… -
在 C 中,你不应该转换
malloc- Do I cast the result of malloc?
标签: c initialization stack