7

この発言の意味はわかる

scanf("%d",&x);

しかし、この声明は何をしますか

scanf("%2d",&x);

これを検索してみましたが、答えが見つかりませんでした。内部で何が起こっているのか知りたいです。

4

2 に答える 2

11

それは2桁の数字です:

int n = 0;
scanf ("%2d", &n);
printf ("-> %d\n", n);

12 -> 12

88657 -> 88

于 2012-12-17T09:14:54.093 に答える
2

「%」記号の直後で、読み取りたいデータのタイプの直前の数値は、その特定のタイプのデータの最大サイズを表します。

整数 (%2d) を読み取っているため、2桁までの整数のみが許可されます。50 文字の長さの配列を読み取る場合は、%49s を使用する必要があります (null 終端バイト用に 1 つ残します)。それは同じ考えです。

int number = 0;
scanf("%2d", &number);
printf("%d", number);

ユーザーが scanf() 関数に 21 を渡した場合、数値 21 が変数 number に格納されます。ユーザーが 21 よりも長い数字、つまり 987 を渡した場合、最初の 2 桁 (98) のみが保存されます。

于 2012-12-17T13:27:54.133 に答える