Home > Enterprise >  What this error mean : expression must have pointer to object type but it has type struct add_stock
What this error mean : expression must have pointer to object type but it has type struct add_stock

Time:04-28

#include <stdio.h>
int i, n;
struct add_stock
{
char fullname[30];
int stocks;
char com_name[30];
int shares;
float price;
float total;
int totalmoney;

} add;
int main()
{

printf("Enter full name : ");
scanf(" %[^\n]s", add.fullname);
printf("Enter the no. of stocks you want to purchased : ");
scanf("%d", &n);
for (i = 0; i < n; i  )
{

printf("Enter the name of the company : ");
scanf(" %[^\n]s", add[i].com_name);

printf("Enter the no. of shares you want to purchased : ");
scanf("%d", &add[i].shares);

printf("Enter the price of each share : ");
scanf("%f", &add[i].price);

add.total = add.shares * add.price;

printf("Toatl money invested in this stock : ");
scanf("%f", &add[i].total);
}
printf("Total money invested : ");
scanf("%d", add.totalmoney);

return 0;
}

In question it's add_stock , not add stock , i write like this becoz it's not accepting question. So, i get error for "add" saying subscripted value is neither array nor pointer nor vector.

CodePudding user response:

To declare an array of strucuture, you need to define the variable as below,

struct add_stock
{
   char fullname[30];
   int stocks;
   char com_name[30];
   int shares;
   float price;
   float total;
  int totalmoney;

} add[20];

this makes the add as an array of add_stock elements. then you can access it as, add[0].total, add[1].price and so on.

If you want to declare an array that need to be having dynamic number of elements, you can do so as below.


 struct add_stock* arStock;

 //allocate memory to hold 10 elements
 arStock = (add_stock*)malloc( 10 * sizeof(struct add_stock));

 arStock[0]->total=10;  //access it with ->, instead of .

  •  Tags:  
  • c
  • Related