#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 分配内存