初心者のコードなのでもっと良いコードを見たい方はブラウザバックを
例その0
int
が3つぐらい並んでいるパターン
3 4 5
少ないので、地道に以下のように一つずつ拾うのでよさそうです。
fscanf(STDIN, "%d %d %d", $A, $B, $C); echo $A; #3 echo $B; #4
例その1
int
がまず出てきて、そのあとそのint
分string
要素が多めに出てくるパターン
5 banana apple orange kiwi peach
多めに出てくると面倒なので、リストに格納することにします。
<?php fscanf(STDIN, "%d", $N); $S = array(); for ($n=0; $n<$N; $n++){ fscanf(STDIN, "%s", $tmp); $S[] = $tmp; }
例その2
int
が出てきて、そのあとそのint
分のint
要素が出てくるパターン
100 1 2 3 4 ...... 100
これも多めに出てくると面倒なので、リストに格納します。
今回はexplode
関数を使ってみます。ですが、explode
だとstring
のまま読み込まれてしまいます。
なので最初すべてstring
として読み取って、intval
で読み取るしか見つかりませんでした。。。
<?php fscanf(STDIN, "%d, $N); $X = explode(" ", fgets(STDIN)); $X = array_map('intval', $X);
explode
よりさっきの例のほうが便利かもしれません。
# さっきの例だと。。。 fscanf(STDIN, "%d", $N); $S = array(); for ($n=0; $n<$N; $n++){ fscanf(STDIN, "%d", $tmp); $S[] = $tmp; }
phpの標準入力についてもうすこし研究してみます。以上。