0

私はCProgLanguageを練習していて、レジ係の機能を備えたサロンを作ることにしました。

私はまだ学んでいますが、それは厄介に見えます

ここに投稿:http://pastebin.com/B2XaaCYV

変数「menu」でランタイムエラーが表示されますが、5倍前後で再確認しようとしましたが、エラーは表示されません。コードはxy[0][1]=デフォルト0=まだ購入されていないことを意味するように本当に単純です。その値は0/1のみになります。ヘアスタイルを選んで実際に購入すると1になります。

そしてもちろん

xy[1][i] means price of xy[0][i]

ブレークの削除や変数名の変更などの他の手法を使用しようとしましたが、それでも変数メニューでランタイムエラーが表示されます

何がエラーになるのかわかりません。だから誰かがこれで私を助けてくれることを願っています

4

1 に答える 1

1
scanf("%1s",&menu);

いいえ!Acharは文字列ではありません。単一の文字を取得したいので、またはのいずれgetchar()かを使用しますscanf("%c",&menu);

関連するエラーは、core_return3文字を1文字に読み込もうとした場合に発生します。mainまた、サブルーチンで自分を呼び出さないでください。代わりに、サブルーチンから戻り、メインにループを入れてください。ちなみに、有効ではありません'yes''no'文字列を比較する場合は、次を使用する必要がありますstrcmp

// returns 1 if the user wants to go again
int another_menu(void)
{
    char tmp[20];
    printf("Do you want another service?");

    for(;;){
        scanf("%3s",tmp);
        if(strcmp("y",tmp) || strcmp("yes",tmp))
            return 0;
        else if(strcmp("n",tmp) || strcmp("no",tmp))
            return 1;
        printf("Please specify either 'no' or 'yes': ");
    }
}

エラーをより迅速に見つけるために、コンパイラの警告を使用してください(GCC:) -Wall -Wextra

于 2013-03-11T10:43:08.060 に答える