使用数组时出现分段错误

Now*_*der -1 c struct segmentation-fault

#include <stdio.h>

typedef struct StockDetail {
    char* name;
    int code;
    int price;

} Stock;

int main(void)
{
    Stock a[200]; int i; int b;
    for(i=0; i<20 ; i++ )
    {
        printf("Stock %i\n",i+1);
        printf("Name:");
        scanf("%s",a[i].name);
        printf("Code:");
        scanf("%i",&a[i].code);
        printf("Name:");
        scanf("%i",&a[i].price);

    }

    printf("Maximum price of the stock:");
    scanf("%i", &b);

    for(i=0; i<20 ; i++)
    {
        if(a[i].price<=b)
        {
            printf("%s\n",a[i].name);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

嗨,我正在尝试实施一个程序,读取20个股票详细信息,如名称,代码和价格,然后要求用户输入最高价格并打印成本低于价格的股票.代码看起来很好但是当我试图运行它时给出了"分段错误"错误行.

Loz*_*ace 7

你没有为你分配任何空间Stock.name.使用char[100]或分配一些空间.

就像是:

for(i=0; i<20 ; i++ )
{
    char tempname[100];
    printf("Stock %i\n",i+1);
    printf("Name:");
    scanf("%s",tempname);
    a[i].name=strdup(tempname);
Run Code Online (Sandbox Code Playgroud)

别忘了释放它!

否则申报

typedef struct StockDetail {
char name[100];
int code;
int price;

} Stock;
Run Code Online (Sandbox Code Playgroud)