大家好,我有这个程序,它的基本功能是创建一个集合并要求用户添加输入。然后程序将检查输入,如果该输入已经在程序中,它会要求用户输入单个输入。
这是我一直在使用的结构:
struct memory
{
int num;
char element[MAXNUMB];
};
typedef struct memory *Item;
这是创建函数:
Item Create()
{
Item set;
set=(Item*)malloc(sizeof(Item));
set->num=0;
return set;
}
这是添加函数:
void Add(Item S,int x)//add an element to set S
{
Item set;
int i,flags;
flags=0;
if(S==NULL)//gives error if set doesn't exist
{
printf("Memory Allocation failed. Goodbye!");
exit(EXIT_FAILURE);
}
printf("Please enter an input: ");//takes input from user
scanf("%d",&x);
for(i=0;i<n;i++)//checking for similar inputs
{
if(set->element[i]!=x)
{
flags=1;
}
else
{
if(flags!=1)
flags=0;
}
}
while(flags==0)
{
printf("Error! Integer already exists! Please enter a different input: ");
scanf("%d",&x);
for(i=0;i<n;i++)
{
if(set->element[i]!=x)
{
flags=1;
}
else
{
if(flags!=1)
flags=0;
}
}
}
set->element[set->num]=x;//it is crashing on this line
printf("x");
n++;
set=realloc(set,n*sizeof(Item));
set->num++;
}
我的程序在这一行崩溃了
set->element[set->num]=x;
如果你能给我一些关于如何解决这个问题的建议,我将不胜感激。谢谢
最佳答案
这一行
set=(Item*)malloc(sizeof(Item));
应该阅读
set=malloc(sizeof(struct memory));
因为你想分配更多的内存而不仅仅是一个指针
关于c - 它不允许我将变量存储到结构中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20812417/