0

各行に1桁を書き込まずに10桁の数字を追加するにはどうすればよいですか.

struct test {
  unsigned short telephone[10];
  //Some Code Here ... 
}

for (j = 0; j < 10; j++) {
  scanf("%d", & seats[position - 1].telephone[j]);
}
4

1 に答える 1

1

言及する2つのこと、

  • データ型を尊重する
  • scanf で最大フィールド幅を利用します。

書く

 scanf("%1hu", &seats[position-1].telephone[j]);
     //  ^

input から 1 つの要素のみを読み取ります。

注:h長さ修飾子であり、次のように記述されています。

h

dの 、iouxXまたはn変換指定子が to または の引数に適用されることを指定type pointershort intますunsigned short int

C11§7.21.6.2/p9章からの関連もある(私の強調)

入力項目は、指定されたフィールド幅を超えず、一致する入力シーケンスであるか、そのプレフィックスである入力文字の最長シーケンスとして定義されます。

于 2016-12-22T21:59:05.980 に答える