Maison > développement back-end > tutoriel php > Je peux utiliser PHP pour répondre à des questions de programmation en ligne !

Je peux utiliser PHP pour répondre à des questions de programmation en ligne !

藏色散人
Libérer: 2023-04-09 20:40:01
avant
2748 Les gens l'ont consulté

Je peux utiliser PHP pour répondre à des questions de programmation en ligne !

Défiez des questions de programmation en ligne à l'aide de PHP

Aujourd'hui, je souhaite utiliser PHP pour contester certaines questions de programmation en ligne dans Sphere Online Judge, vous devez utiliser une entrée et une sortie standard, mais j'écris PHP récemment et je ne veux pas utiliser C. Je soumets généralement des formulaires lors de l'écriture de projets, je n'y ai vraiment pas pensé, alors j'ai lu la documentation.

Le document est ici : http://php.net/manual/zh/wrappers.php.php

1 Introduction à PHP STDIN, STDOUT, STDERR :

, STDIN, STDOUT les flux d'entrée et de sortie de commande sont utilisés pour entrer et sortir du contenu sur la console (terminal shell Linux, terminal cmd Windows). Ils sont ouverts par défaut et peuvent être lus directement. Opérations d'écriture, elles ne peuvent être utilisées qu'en mode CLI (interface de ligne de commande, interface de ligne de commande) et elles ne sont pas définies en mode HTTP. STDERR

et leurs copies ouvertes

, php://stdin, php://stdout ne parviennent pas non plus à afficher le contenu sur le navigateur http. Après le test : le contenu écrit sur php://stderr sera inscrit dans le journal des erreurs de. le site par défaut, les deux autres n'ont aucun effet. php://stderr

STDIN/STDOUT/STDERR Introduction :

原始流 流打开副本 描述
STDIN php://stdin 标准输入(standard input),只读,用于从控制台输入内容;
STDOUT php://stdout 标准输出(standard output),只写,用于向控制台输出正常信息
STDERR php://stderr 错误输出(standard error),只写,用于向控制台输出错误信息
Officiellement recommandé d'utiliser les constantes STDIN, STDOUT et STDERR pour remplacer leurs wrappers de copie ouverts manuellement

, php://stdin et php://stdout . php://stderr

[Apprentissage recommandé :

Tutoriel vidéo PHP]

2. Utilisation de PHP STDIN :

"STDIN" en langage PHP est utilisé pour read from La console lit le contenu.Lorsqu'il rencontre cette constante ou ouvre le script

via la fonction fopen(), le script attendra que l'utilisateur saisisse le contenu jusqu'à ce que l'utilisateur appuie sur la touche Entrée pour le soumettre. php://stdin

Écrire un

test : stdin.php

<?php
echo "请输入内容:";
$jimmy = fgets(STDIN);
echo sprintf("输入的内容为: %s\n", $jimmy);
 
$demo = fopen(&#39;php://stdin&#39;, &#39;r&#39;);
echo "请输入: ";
$test = fread($demo, 12); //最多读取12个字符
echo sprintf("输入为: %s\n", $test);
fclose($demo);
Copier après la connexion

Résultat d'exécution :

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

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

3. Utilisation de PHP STDOUT :

Utiliser

en langage PHP Utilisé pour afficher les informations standard sur la console ; le contenu écrit sur cette constante ou sur STDOUT ouvert par la fonction fopen() sera directement envoyé vers la php://stdoutsortie standard de la console; le contenu peut être redirigé vers un endroit spécifié, tel qu'un fichier, en utilisant ">" ou "1>". De même, écrivons un fichier pour tester

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

Exécutez-le :

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

☁  test  php demo.php
通过STDOUT写入;
通过php://stdout写入;% 
☁  test
Copier après la connexion
4. Utilisation de PHP STDERR :

"STDERR" en langage PHP utilisé pour afficher les informations d'erreur sur la console ; le contenu écrit dans une constante ou dans "php://stderr" ouvert par la fonction

fopen() sera directement affiché dans la sortie d'erreur de la console. ; Le contenu de la sortie d'erreur peut être redirigé vers un endroit spécifié, tel qu'un fichier, en utilisant "2>" ; vous pouvez également utiliser "2>&1" pour diriger la sortie d'erreur. à la sortie standard, fusionnée avec la sortie standard.

Testons-le

<?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);
Copier après la connexion

La sortie normale et la sortie d'erreur sont dirigées vers des fichiers différents :

☁  test  php demo.php 1>demo.ok 2>demo.err
☁  test   cat demo.ok
STDOUT写入的正常输出;
php://stdout写入的正常输出;
☁  test   cat demo.err
STDERR写入的错误输出;
php://stderr写入的错误输出;
Copier après la connexion
La sortie normale et la sortie d'erreur sont fusionnées et dirigées vers un fichier unifié :

☁  test  php demo.php 1>AllInOne 2>&1
☁  test  cat AllInOne
STDERR写入的错误输出;
STDOUT写入的正常输出;
php://stdout写入的正常输出;
php://stderr写入的错误输出;
Copier après la connexion
D'accord, vous pouvez maintenant accéder à Sphere Online Judge. Testez d'abord un sujet de démonstration

Écrivez un code

<?php
    // your code here
$x=0;
while($x!=42){
   $x = fgets(STDIN);
   if($x!=42){
   echo sprintf("%d\n",$x);
}
}
?>
Copier après la connexion
Soumettez

Hahahaha, tout à fait ok, alors Il n'est pas nécessaire de me limiter à Java et C. Je peux utiliser PHP pour répondre à certaines questions. Vous pouvez également l'essayer ?

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal