c - 使用阵列时的分段错误


#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 %in",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("%sn",a[i].name);
        }
    }
}

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

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

像这样:

for(i=0; i<20 ; i++ )
{
    char tempname[100];
    printf("Stock %in",i+1);
    printf("Name:");
    scanf("%s",tempname);
    a[i].name=strdup(tempname);

不要忘记释放它!

否则声明

typedef struct StockDetail {
char name[100];
int code;
int price;
} Stock;
scanf("%s",a[i].name);

在这里,您正在以名称进行输入,该名称只是char*它没有为其分配内存,您可以将其声明为具有足够大小的字符数组或在输入之前使用 malloc 分配内存

相关内容

  • 没有找到相关文章

最新更新