由于函数中的结构重复导致的 c 分段错误

c segmentation fault due to duplicacy in structure in functions

程序第一次运行正常,但是如果我们想添加另一本书的详细信息,在我输入第一个属性后出现分段错误

int main()
{
    float count_tot=0,profit_tot=0;
    char option='y';
    fflush(stdin);
    struct book b;
    while(option!='n')
    {
        b=getinput();
        display(b);
        b.need= calcneed(b);
        b.profit=calcprofit(b);
        printf("Need To Order:%d\n",b.need);
        printf("Total Cost:%f\n",(b.need-b.qtyonhand)*b.price_sin);
        printf("do another book(Y/n)");
        scanf("%c",&option);
        option=getchar();
        count_tot+=(b.need-b.qtyonhand)*b.price_sin;
        profit_tot+=b.profit;
    }
    drawline();
    printf("TOTAL PROFIT:%f\n",profit_tot);
    printf("TOTAL COST:%f\n",count_tot);
    return(0);
}

struct book getinput
{
    struct book b;
    scanf("%d",&b.book_code);
    ...
    ...
} //the function contains a number of scanf functions

您正在函数 getinput 中创建一个局部变量并查看其用法,并将其返回给调用者。您最好将结构作为参数传递并将数据读入该结构。函数终止时结构的本地副本被销毁,除非您使用动态内存分配。