#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);
}
}
}
您好,我正在尝试实施一个程序,该程序会读取名称,代码和价格等20个库存明细,然后要求用户输入最高价格并打印成本低于价格的库存。代码看起来很好,但是当我试图运行它时,给出了#34;分段错误&#34;错误行。
答案 0 :(得分: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);
别忘了释放它!
否则声明
typedef struct StockDetail {
char name[100];
int code;
int price;
} Stock;
答案 1 :(得分:4)
scanf("%s",a[i].name);
这里你输入的名称只有char*
它没有分配内存,你可以将它声明为具有足够大小的char数组,或者在输入之前用malloc分配内存