0

**私が追加した新しいコードで。問題ないと思いますが、アイテムのコードを入力したらプログラムが停止してしまいました。これを修正するにはどうすればよいですか?

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";

しかし、私のプログラムはまだ動作を停止しました。総重量と価格は表示されません。

4

3 に答える 3

0

変化する

char product[20];

const char * product;
于 2014-02-17T22:13:33.613 に答える
0

文字列操作を使用する場合は、product 変数を、少なくともデータの長さ + 1 (null char の場合) に十分な大きさになるように初期化するように注意してください。あなたが宣言したのでそう言いましたproduct[20]が、長さ"Fibre-inforced Cement";は> 20です

于 2014-02-17T22:17:20.340 に答える
0

C では、定数文字列を に割り当てることはできませんchar []。例えば

product= "Cement";

間違っています。使用する必要があります

strcpy(product, "Cement");
于 2014-02-17T22:10:32.483 に答える