ホームページ  >  記事  >  バックエンド開発  >  PHPを使ってオンラインプログラミングの問題に挑戦できる!

PHPを使ってオンラインプログラミングの問題に挑戦できる!

藏色散人
藏色散人転載
2021-04-01 17:27:012624ブラウズ

PHPを使ってオンラインプログラミングの問題に挑戦できる!

PHP を使用してオンライン プログラミングの質問に挑戦する

今日は、PHP を使用してオンライン プログラミングの質問に挑戦したいと思います。 Sphere Online Judge では、標準入出力を使用する必要がありますが、最近 PHP を書いていて C は使いたくないのですが、プロジェクトを書くときにフォームを送信することが多いのですが、これについてはまったく考えていなかったので、ドキュメントを読みました。

ドキュメントはこちら: http://php.net/manual/zh/wrappers.php.php

1. PHP STDIN、STDOUT、STDERR の概要:

STDINSTDOUTSTDERR コマンド入力ストリームと出力ストリームは、コンソール (Linux シェル ターミナル、Windows cmd ターミナル) へのコンテンツの入出力に使用されます。 ), これらはデフォルトで開かれ、直接読み書きできます。CLI (コマンドライン インターフェイス、コマンド ライン インターフェイス) モードでのみ使用できます。HTTP モードでは未定義です。

また、開いているコピー php://stdinphp://stdoutphp://stderr もコンテンツを出力できませんhttp ブラウザに移動してテストします。php://stderr に書き込まれた内容はデフォルト サイトのエラー ログに入力され、他の 2 つは影響しません。

STDIN/STDOUT/STDERR 概要:

#STDINphp://stdin標準入力 (標準入力)、読み取り専用、コンソールからコンテンツを入力するために使用されます。 ; STDOUTphp://stdout標準出力 (標準出力)、書き込み専用、コンソールへの出力に使用されますSTDERRphp://stderrエラー出力 (標準エラー)、書き込み専用、以前はコンソールにレポート出力##公式には、手動で開いたコピー ラッパーの代わりに定数 STDIN、STDOUT、および STDERR を使用することを推奨しています
元のストリーム ストリーム オープン コピー 説明
通常のメッセージ;
エラー メッセージ;
php: // stdin

php://stdout、および php://stderr[推奨学習:

PHP ビデオ チュートリアル

]
2. PHP STDIN の使用法:

PHP 言語の「STDIN」は、次の目的で使用されます。 read from コンソールはコンテンツを読み取ります。この定数が見つかった場合、または

fopen()

関数、php://stdin を通じて開いた場合、スクリプトはユーザーがコンテンツを入力するまで待機します。ユーザーは Enter キーを押して送信します。 書き込み

stdin.php

テスト:<pre class="brush:php;toolbar:false">&lt;?php echo &quot;请输入内容:&quot;; $jimmy = fgets(STDIN); echo sprintf(&quot;输入的内容为: %s\n&quot;, $jimmy); $demo = fopen(&amp;#39;php://stdin&amp;#39;, &amp;#39;r&amp;#39;); echo &quot;请输入: &quot;; $test = fread($demo, 12); //最多读取12个字符 echo sprintf(&quot;输入为: %s\n&quot;, $test); fclose($demo);</pre>実行結果:

请输入内容:sad
输入的内容为: sad

请输入: asdasdasdasdasdasd
输入为: asdasdasdasd(这里因为设置了最多读取12个字符,设置更多一些就可以完整显示)

3. PHP STDOUT の使用法:

PHP In言語

STDOUT

は、標準情報をコンソールに出力するために使用されます。この定数または fopen() 関数によって開かれた php://stdout に書き込みます。内容はコンソールの 標準出力 に直接出力されます。標準出力の内容は、「>」または「」を使用して指定した場所にリダイレクトできます。 1>" などのファイル。 同様に、テストするファイルを作成しましょう

<?php
fwrite(STDOUT, "通过STDOUT写入;\n");
 
$demo = fopen("php://stdout", "w");
fwrite($demo, "通过php://stdout写入;");
fclose($demo);

実行します:

☁  test  php demo.php > a.txt
☁  test  cat a.txt
通过STDOUT写入;
通过php://stdout写入;% 

☁  test  php demo.php
通过STDOUT写入;
通过php://stdout写入;% 
☁  test

4. PHP STDERR の使用法:

PHP 言語の「STDERR」エラー情報をコンソールに出力するために使用されます。定数または

fopen()

関数によって開かれた「php://stderr」に書き込まれた内容は、コンソールの エラー出力; エラー出力の内容は、「2>」を使用してファイルなどの指定した場所にリダイレクトできます。また、「2>&1#」を使用してエラー出力を標準出力にリダイレクトすることもできます。 ##" は標準出力にマージされます。 テストしてみましょう

<?php
fwrite(STDERR, "STDERR写入的错误输出;\n");
 
fwrite(STDOUT, "STDOUT写入的正常输出;\n");

$stdout = fopen("php://stdout", "w");
fwrite($stdout, "php://stdout写入的正常输出;\n");
fclose($stdout);

$stderr = fopen("php://stderr", "w");
fwrite($stderr, "php://stderr写入的错误输出;\n");
fclose($stderr);

通常の出力とエラー出力は別のファイルに送信されます:

☁  test  php demo.php 1>demo.ok 2>demo.err
☁  test   cat demo.ok
STDOUT写入的正常输出;
php://stdout写入的正常输出;
☁  test   cat demo.err
STDERR写入的错误输出;
php://stderr写入的错误输出;
通常の出力とエラー出力はマージされ、統合されたファイルに送信されます:

☁  test  php demo.php 1>AllInOne 2>&1
☁  test  cat AllInOne
STDERR写入的错误输出;
STDOUT写入的正常输出;
php://stdout写入的正常输出;
php://stderr写入的错误输出;
さて、まず Sphere Online Judge に行ってデモ トピックをテストしてください

コードを書いてください

<?php
    // your code here
$x=0;
while($x!=42){
   $x = fgets(STDIN);
   if($x!=42){
   echo sprintf("%d\n",$x);
}
}
?>
送信

ハハハハ、全然わかりました、それではJava と C に限定する必要はありません。PHP を使用していくつかの質問に挑戦できます。試してみることもできますか?

以上がPHPを使ってオンラインプログラミングの問題に挑戦できる!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。