c - 它不允许我将变量存储到结构中的数组

标签 c arrays pointers struct

大家好,我有这个程序,它的基本功能是创建一个集合并要求用户添加输入。然后程序将检查输入,如果该输入已经在程序中,它会要求用户输入单个输入。

这是我一直在使用的结构:

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/

相关文章:

将负数转换为正数但保持正数不变

c - C 中奇怪的输出日历

c - malloc 将内存转换为结构

c - 内核编程 : wait queue uses spinlock internally

python - 获取包含基本元素的数组的反向切片

c++ - 如何填充二维数组?

ruby-on-rails - 如何用不同的值替换数组中的给定值?

c++ - 解引用双指针、三指针等

c - 如何将struct pointer的指针域全部初始化为NULL?

c# - 使用 CLI 将 C# double 组传递给 C++ 函数