這篇文章主要介紹了使用PHP挑戰(zhàn)在線編程題的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)是專業(yè)的鄂城網(wǎng)站建設(shè)公司,鄂城接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行鄂城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
用PHP挑戰(zhàn)在線編程題
STDIN
、STDOUT
、STDERR
命令輸入輸出流,用于向控制臺(tái)(linux shell終端、windows cmd終端)輸入、輸出內(nèi)容,它們默認(rèn)是已經(jīng)打開的,可以直接對(duì)他們進(jìn)行讀寫操作,它們只能在CLI(command-line interface,命令行界面)模式中使用,在Http模式時(shí),它們是未定義的。
而他們的打開副本php://stdin
、php://stdout
、php://stderr
也無法輸出內(nèi)容到http瀏覽器,經(jīng)測(cè)試:寫入php://stderr
的內(nèi)容將會(huì)輸入到默認(rèn)站點(diǎn)的錯(cuò)誤日志中,其它兩種無任何效果。
STDIN/STDOUT/STDERR簡介:
原始流 | 流打開副本 | 描述 |
---|---|---|
STDIN | php://stdin | 標(biāo)準(zhǔn)輸入(standard input),只讀,用于從控制臺(tái)輸入內(nèi)容; |
STDOUT | php://stdout | 標(biāo)準(zhǔn)輸出(standard output),只寫,用于向控制臺(tái)輸出正常信息; |
STDERR | php://stderr | 錯(cuò)誤輸出(standard error),只寫,用于向控制臺(tái)輸出錯(cuò)誤信息; |
官方推薦使用常量 STDIN、 STDOUT 和 STDERR 來代替它們手動(dòng)打開的副本封裝器php://stdin
、 php://stdout
和 php://stderr
。
PHP語言中"STDIN"用于從控制臺(tái)讀取內(nèi)容,遇到此常量或者通過fopen()
函數(shù)打開php://stdin
腳本將會(huì)等待用戶輸入內(nèi)容,直到用戶按下回車鍵提交。
寫個(gè)stdin.php
測(cè)試一下:
<?php echo "請(qǐng)輸入內(nèi)容:"; $jimmy = fgets(STDIN); echo sprintf("輸入的內(nèi)容為: %s\n", $jimmy); $demo = fopen('php://stdin', 'r'); echo "請(qǐng)輸入: "; $test = fread($demo, 12); //最多讀取12個(gè)字符 echo sprintf("輸入為: %s\n", $test); fclose($demo);
運(yùn)行結(jié)果:
請(qǐng)輸入內(nèi)容:sad 輸入的內(nèi)容為: sad 請(qǐng)輸入: asdasdasdasdasdasd 輸入為: asdasdasdasd(這里因?yàn)樵O(shè)置了最多讀取12個(gè)字符,設(shè)置更多一些就可以完整顯示)
PHP語言中STDOUT
用于向控制臺(tái)輸出標(biāo)準(zhǔn)信息;向此常量、或者向fopen()函數(shù)打開的php://stdout
寫入的內(nèi)容將直接輸出到控制臺(tái)的標(biāo)準(zhǔn)輸出;標(biāo)準(zhǔn)輸出的內(nèi)容可以用過">"或者"1>"重定向到指定地方,比如文件。
同理我們寫個(gè)文件來測(cè)試一下
<?php fwrite(STDOUT, "通過STDOUT寫入;\n"); $demo = fopen("php://stdout", "w"); fwrite($demo, "通過php://stdout寫入;"); fclose($demo);
運(yùn)行一下:
? test php demo.php > a.txt ? test cat a.txt 通過STDOUT寫入; 通過php://stdout寫入;% ? test php demo.php 通過STDOUT寫入; 通過php://stdout寫入;% ? test
PHP語言中"STDERR"用于向控制臺(tái)輸出錯(cuò)誤信息;向常量、或者向fopen()函數(shù)打開的"php://stderr"寫入的內(nèi)容將直接輸出到控制臺(tái)的錯(cuò)誤輸出;錯(cuò)誤輸出的內(nèi)容可以用過"2>"重定向到指定地方,比如文件;也可以使用"2>&1"將錯(cuò)誤輸出定向到標(biāo)準(zhǔn)輸出,與標(biāo)準(zhǔn)輸出合并。
我們測(cè)試一下
<?php fwrite(STDERR, "STDERR寫入的錯(cuò)誤輸出;\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寫入的錯(cuò)誤輸出;\n"); fclose($stderr);
正常輸出和錯(cuò)誤輸出分別定向到不同文件:
? test php demo.php 1>demo.ok 2>demo.err ? test cat demo.ok STDOUT寫入的正常輸出; php://stdout寫入的正常輸出; ? test cat demo.err STDERR寫入的錯(cuò)誤輸出; php://stderr寫入的錯(cuò)誤輸出;
正常輸出和錯(cuò)誤輸出合并定向到統(tǒng)一文件:
? test php demo.php 1>AllInOne 2>&1 ? test cat AllInOne STDERR寫入的錯(cuò)誤輸出; STDOUT寫入的正常輸出; php://stdout寫入的正常輸出; php://stderr寫入的錯(cuò)誤輸出;
好了,接下來可以去Sphere Online Judge叱咤風(fēng)云了,先測(cè)試個(gè)demo題目
寫個(gè)代碼
<?php // your code here $x=0; while($x!=42){ $x = fgets(STDIN); if($x!=42){ echo sprintf("%d\n",$x); } } ?>
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“使用PHP挑戰(zhàn)在線編程題的示例分析”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
名稱欄目:使用PHP挑戰(zhàn)在線編程題的示例分析
網(wǎng)站鏈接:http://chinadenli.net/article0/jsicoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、自適應(yīng)網(wǎng)站、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)