11

私はCプログラミングを始めて数日しか経っていないので、このコードの何が問題になっているのかよくわかりません。

#include <stdio.h>

int main(int argc, char * argv[]) {
    int sides;
    printf("Please enter length of three sides :\n");
    scanf("%d", &sides);
    return 0;
}

私が受け取るエラーメッセージは次のとおりです。

scanfの戻り値を無視する

私はここで何を間違っているのですか、そしてそれを修正するために何ができますか?

4

4 に答える 4

9

あなたはコーディングするかもしれません

if (scanf("%d", &sides) >0) {
    printf("you want %d sides.\n", sides);
} 
else printf("You did not enter any number.\n");

scanf関数 (リンクをたどってください) にはいくつかの役割があります

  1. 何らかの入力を期待しており、アドレスで渡した変数を変更する可能性があります
  2. 正常に入力されたアイテムの数を返しています
于 2012-04-06T13:06:05.147 に答える
7

これは、コンパイラがそのタスクを実行するのを止める警告です (厳しすぎる設定)。scanf() 関数の戻り値でエラーを確認すると、警告が消えます。

戻り値

成功すると、関数は正常に読み取られたアイテムの数を返します。一致エラーが発生した場合、このカウントは予想される読み取り数と一致するか、ゼロになることもあります。データが正常に読み取られる前に入力エラーが発生した場合は、EOF が返されます。

于 2012-04-06T13:04:14.463 に答える
0

scanf変数の戻り値をキャプチャしません。これは、読み取られた文字数の (整数としての) カウントであるため、それが重要な場合は、キャプチャすることをお勧めします。

于 2012-04-06T13:03:58.847 に答える