当我执行它时,该功能不起作用?
#include<stdio.h>
struct stack{
int x[10];
int last;
};
void init(struct stack *s)
{
s->last=0;
}
void insert(struct stack *s)
{
int a;
while(a!=0)
{
int i;
printf("Enter the value\n");
scanf("%d",&i);
s->last++;
s->x[s->last]=i;
printf("%d",s->x[s->last]);
printf("enter 1 to continue 0 to exit\n");
scanf("%d",&a);
}
}
int main()
{
struct stack s;
int y,z;
printf("Trying out stacks\n");
printf("\n______________\n");
init(s);
insert(s);
return 0;
}
答案 0 :(得分:2)
在函数insert()
中,您声明了
int a;
然后在没有初始化a
的情况下,您正在执行以下操作,
while(a!=0)
以下行可能导致缓冲区溢出,
s->last++;
s->x[s->last]=i; // no restriction applied on last
last
可能超过9
,导致缓冲区溢出为x[10]
。