1. ホーム
  2. c

[解決済み] 警告: データ引数よりも '%' 変換が多い

2022-02-08 05:14:49

質問

私はC言語初心者で、課題としてプログラムを書こうとしています。ユーザーは7つの浮動小数点数を入力し、それを配列に格納する必要があります。

#include <stdio.h>
#include <string.h>

int main() {
  float data[32];
  printf("Instert 7 values, separated by spaces: ");
  scanf("%f %f %f %f %f %f %f", data);

  return 0;
}

というエラーが出続けます。

warning: more '%' conversions than data arguments [-Wformat]
scanf("%f %f %f %f %f %f %f", data);

ネットで解決策を探したのですが、わかりませんでした。何が間違っているのでしょうか?

解決方法を教えてください。

これは

scanf("%f %f %f %f %f %f %f", data);

は、次のようになります。

scanf("%f %f %f %f %f %f %f", &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6]);

scanf関数は、それぞれの %-something には、入力値を格納する変数へのポインタを指定します。

あるいは、このように書くこともできます。

scanf("%f %f %f %f %f %f %f", data, data+1, data+2, data+3, data+4, data+5, data+6);

配列のベースメモリアドレス/ポインタは データ . で合計すると i ここで i へのポインタを取得します。 の位置を指定します。