**私が追加した新しいコードで。問題ないと思いますが、アイテムのコードを入力したらプログラムが停止してしまいました。これを修正するにはどうすればよいですか?
void cart()
{
int code, amount;
float weight, price, total_weight, total_price1;
char product[20];
switch(code)
{
case 1:
product= "Cement";
weight=20;
price=18;
break;
case 2:
product="Concrete";
weight=30;
price=25;
break;
case 3:
product="Ceramic Tile Floor";
weight=0.1;
price=2.2;
break;
case 4:
product="Foam Insulation";
weight=0.1;
price=2.2;
break;
case 5:
product="Fibre-inforced Cement";
weight=35;
price=50;
break;
case 6:
product="Thick Glass Panel";
weight=20;
price=50;
break;
case 7:
product="Thin Glass Panel";
weight=10.5;
price=30;
break;
case 8:
product="Iron Beam";
weight=5;
price=10;
break;
case 9:
product={"Iron Rod";
weight=1;
price=5;
break;
case 10:
product="Plaster Boards";
weight=10;
price=15;
break;
case 11:
product="Quarry Tiles";
weight=0.5;
price=3;
break;
case 12:
product="Steel Beam";
weight=5;
price=10;
break;
case 13:
product="Wooden Boards";
weight=3;
price=5;
break;
}
printf("\nPlease enter the amount desired:");
scanf("%d", &amount);
total_weight=weight*amount;
total_price1=price*amount;
printf("So far, the total weight and total price in the cart is %f kg & RM%0.1f", total_weight, total_price1);
}
私が使用している言語は C です。上記は私のプログラムのコードです (すべてではありません)。問題は:
.c|42|error: incompatible types when assigning to type 'char[20]' from type 'char *'|
このエラーは、製品のすべての行に当てはまります。私は配列のことを間違っていましたか?変数の製品を文字列として設定したいのですが、ケースごとに製品が異なります。関数内で変数 product をどのように宣言すればよいですか?
また、ユーザーが必要に応じて別の「製品」とその量をカートに追加できるように、どのようにループできますか。次に、重量と価格を合計重量と価格に追加します。そして、センチネルを使用して製品の入力を停止することはできますか?
最後に、私が行ったことを単純化する方法はありますか?
前もって感謝します。
編集したコードは次のとおりです。
void cart()
{
int code, amount;
float weight, price, total_weight, total_price1;
char * product;
printf("\nEnter the code of the desired product:");
scanf("%d", &code);
switch(code)
{
case 1:
strcpy(product, "Cement");
weight=20;
price=18;
break;
case 2:
strcpy(product, "Concrete");
weight=30;
price=25;
break;
case 3:
strcpy(product, "Ceramic Tile Floor");
weight=0.1;
price=2.2;
break;
case 4:
strcpy(product, "Foam Insulation");
weight=0.1;
price=2.2;
break;
case 5:
strcpy(product, "Fibre-Inforced Cement");
weight=35;
price=50;
break;
case 6:
strcpy(product, "Thick Glass Panel");
weight=20;
price=50;
break;
case 7:
strcpy(product, "Thin Glass Panel");
weight=10.5;
price=30;
break;
case 8:
strcpy(product, "Iron Beam");
weight=5;
price=10;
break;
case 9:
strcpy(product, "Iron Rod");
weight=1;
price=5;
break;
case 10:
strcpy(product, "Plaster Board");
weight=10;
price=15;
break;
case 11:
strcpy(product, "Quarry Tiles");
weight=0.5;
price=3;
break;
case 12:
strcpy(product, "Steel Beam");
weight=5;
price=10;
break;
case 13:
strcpy(product, "Wooden Board");
weight=3;
price=5;
break;
}
printf("\nPlease enter the amount desired:");
scanf("%d", &amount);
total_weight=weight*amount;
total_price1=price*amount;
printf("So far, the total weight and total price in the cart is %0.2fkg & RM%0.2f", total_weight, total_price1);
}
しかし、次のメッセージが表示されます。
.c|45|warning: 'product' may be used uninitialized in this function [-Wuninitialized]|
コード番号のいずれかを入力すると、プログラムが機能しなくなりました。
また、ユーザーが停止するまで製品と金額のコードを入力し続けることができるように、プログラムをループする方法を知ることはできますか?
わかった。そのため、次のコードで修正しました。
char * product="Unknown";
しかし、私のプログラムはまだ動作を停止しました。総重量と価格は表示されません。