我是靠谱客的博主 沉默高跟鞋,这篇文章主要介绍我可以用PHP挑战在线编程题了!,现在分享给大家,希望可以做个参考。

用PHP挑战在线编程题

文档在此:http://php.net/manual/zh/wrappers.php.php

一、PHP STDIN、STDOUT、STDERR简介: 

STDINSTDOUTSTDERR命令输入输出流,用于向控制台(linux shell终端、windows cmd终端)输入、输出内容,它们默认是已经打开的,可以直接对他们进行读写操作,它们只能在CLI(command-line interface,命令行界面)模式中使用,在Http模式时,它们是未定义的。

而他们的打开副本php://stdinphp://stdoutphp://stderr 也无法输出内容到http浏览器,经测试:写入php://stderr的内容将会输入到默认站点的错误日志中,其它两种无任何效果。

STDIN/STDOUT/STDERR简介:

原始流流打开副本描述
STDINphp://stdin标准输入(standard input),只读,用于从控制台输入内容;
STDOUTphp://stdout标准输出(standard output),只写,用于向控制台输出正常信息
STDERRphp://stderr错误输出(standard error),只写,用于向控制台输出错误信息

官方推荐使用常量 STDIN、 STDOUT 和 STDERR 来代替它们手动打开的副本封装器php://stdinphp://stdoutphp://stderr

【推荐学习:PHP视频教程】

二、PHP STDIN用法:

PHP语言中"STDIN"用于从控制台读取内容,遇到此常量或者通过fopen()函数打开php://stdin脚本将会等待用户输入内容,直到用户按下回车键提交。

写个stdin.php测试一下:

复制代码
1
2
3
4
5
6
7
8
9
10
<?php echo "请输入内容:"; $jimmy = fgets(STDIN); echo sprintf("输入的内容为: %sn", $jimmy); $demo = fopen('php://stdin', 'r'); echo "请输入: "; $test = fread($demo, 12); //最多读取12个字符 echo sprintf("输入为: %sn", $test); fclose($demo);
登录后复制

运行结果:

复制代码
1
2
3
4
5
请输入内容:sad 输入的内容为: sad 请输入: asdasdasdasdasdasd 输入为: asdasdasdasd(这里因为设置了最多读取12个字符,设置更多一些就可以完整显示)
登录后复制

三、PHP STDOUT用法:

PHP语言中STDOUT用于向控制台输出标准信息;向此常量、或者向fopen()函数打开的php://stdout写入的内容将直接输出到控制台的标准输出;标准输出的内容可以用过">"或者"1>"重定向到指定地方,比如文件。

同理我们写个文件来测试一下

复制代码
1
2
3
4
5
6
<?php fwrite(STDOUT, "通过STDOUT写入;n"); $demo = fopen("php://stdout", "w"); fwrite($demo, "通过php://stdout写入;"); fclose($demo);
登录后复制

运行一下:

复制代码
1
2
3
4
5
6
7
8
9
☁ test php demo.php > a.txt ☁ test cat a.txt 通过STDOUT写入; 通过php://stdout写入;% ☁ test php demo.php 通过STDOUT写入; 通过php://stdout写入;% ☁ test
登录后复制

四、PHP STDERR用法:

PHP语言中"STDERR"用于向控制台输出错误信息;向常量、或者向fopen()函数打开的"php://stderr"写入的内容将直接输出到控制台的错误输出;错误输出的内容可以用过"2>"重定向到指定地方,比如文件;也可以使用"2>&1"将错误输出定向到标准输出,与标准输出合并。

我们测试一下

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<?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);
登录后复制

正常输出和错误输出分别定向到不同文件:

复制代码
1
2
3
4
5
6
7
☁ test php demo.php 1>demo.ok 2>demo.err ☁ test cat demo.ok STDOUT写入的正常输出; php://stdout写入的正常输出; ☁ test cat demo.err STDERR写入的错误输出; php://stderr写入的错误输出;
登录后复制

正常输出和错误输出合并定向到统一文件:

复制代码
1
2
3
4
5
6
☁ test php demo.php 1>AllInOne 2>&1 ☁ test cat AllInOne STDERR写入的错误输出; STDOUT写入的正常输出; php://stdout写入的正常输出; php://stderr写入的错误输出;
登录后复制

好了,接下来可以去Sphere Online Judge叱咤风云了,先测试个demo题目

写个代码

复制代码
1
2
3
4
5
6
7
8
9
10
<?php // your code here $x=0; while($x!=42){ $x = fgets(STDIN); if($x!=42){ echo sprintf("%dn",$x); } } ?>
登录后复制

提交

哈哈哈哈,完全ok,再也不用限制于java和c了,我可以用PHP挑战一些题目了,大家也可以去试试?

以上就是我可以用PHP挑战在线编程题了!的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是沉默高跟鞋最近收集整理的关于我可以用PHP挑战在线编程题了!的全部内容,更多相关我可以用PHP挑战在线编程题了内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(110)

评论列表共有 0 条评论

立即
投稿
返回
顶部