0

次のコードでは、コードで現在使用されている 100 の代わりに、「e」と入力してコードを終了し、結果を表示するオプションをユーザーに提供したいと考えています。しかし、scanf は宣言された型と一致する整数を想定しているため、端末から 'e' を使用してコードを正しく実行することはできません。整数の代わりに任意の文字を入力すると、scanf は何らかの方法でそれを変数に格納します。その方法は固定ですか?修正された場合、その保存された値を使用して、プログラムを終了するかどうかを確認できますか?

#include<stdio.h>
int main(void)
{
    int rating[11], x;

    for (int a = 0; a <= 11; a++)
        rating[a] = 0;

    while (1){
        printf("key in 100 to see the results\n");
        printf("Enter the rating on a scale from 1 to 10 ?");
        scanf("%i", &x);

        if ((x < 1 || x > 10) && x != 100)
            printf("bad entry ! \n");

        if (x == 100){
            printf("\nRatings..............No of responses\n");
            for (int y = 1; y <= 10; y++)
                printf("%2i.......................%2i\n", y, rating[y]);
            return 0;
        }

        rating[x]++;
    }
}
4

1 に答える 1

2

scanf正常に読み取られた項目の数を返します (エラーの場合は -1)。したがって、0 が返されるかどうかを確認しscanf、その場合は保釈することが考えられます。数値以外が入力された場合、プログラムは終了します。

特に をチェックしたい場合は、入力行全体を調べ、 を使用して特殊なケースをチェックし、 を使用して整数を取得する'e'のが最善の方法です。fgetsstrcmpatoi

于 2012-11-20T01:27:50.183 に答える