2017-02-02 10 views
1

私はシェルコマンドを使うのが初めてです。私はPHPでデバッガアプリケーションをやっています。コードのロジックが正しいかどうかを調べるために.exeファイルの結果を調べる必要があります私はテストプログラムを試しました。shell_exec関数の引数を渡すことができません

Cプログラムは

では、これは、これは、任意の値をエコーされていないse.exe

PHPコード

<?php 
define('STDIN',fopen("php://stdin","r")); 
$cor1=1; 
$op=shell_exec("se.exe H"); 
echo($op); 
if($op=="H H") 
$cor1+=1; 
echo $cor1; 
if($cor1>1) 
{echo "PASSED";} 
else 
{echo "FAILED";} 
?> 

としてコンパイルさ

#define MAX 128 
int main(char c) 
{ 
const int max=127; 
char array[max]; // char array[10]; 
char string[MAX]; 
scanf("%c",&c); 
array[0] = string[0] = c; 
printf("%c %c\n", array[0], string[0]); 
return 0; 
} 

を含みます。

答えて

0

引数が正常に渡されたと思います。引数を使用しないcコード。ユーザーの入力を取得し、実際に渡されている引数を使用しないためにscanfを実行しています。引数を使用するには、cコードを変更する必要があります。

int main(int argc, char *argv[]) { 
    /* ... 
    argv[0] will have the executable name as a char array (char *) 
    argv[1] will have the first command line argument as a char array (char *) 
    argv[1][0] will have the first character of the first parameter that you seem to be interested. 
    ensure that you do proper null check or you will get core dump/application crash 
    */ 
} 
+0

レスポンスありがとうございます。コマンドライン引数を使ってみましたが、コマンドプロンプトでargumentsを使って実行しようとしましたが、うまくいきませんでした。 –

+0

#include #include int main(int argc、char * argv){ int rad = argv [1]; printf( "%c"、rad); リターン1; } @Code Warrior –

+0

上記のコードは、コマンドプロンプトまたはPHPのexec関数から実行すると、引数が何であるかにかかわらず、同じ出力を出力します。返される出力は、このスラッシュだけです。 –

0

Cプログラムは、比較文字列が

if($op=="H H") 

は私が提案し、以下の行に改行を含めていない下の行のPHPコードで

printf("%c %c\n", array[0], string[0]); 

で改行\ nを印刷しています文字列を比較するために==演算子を使用しないでください。

if(strcmp($op, "H H\n") == 0) 

これが役に立ちます。

+0

回答ありがとうございます。私は\ nをCプログラムから削除し、strcmpも使用しました。しかし結果は変わらない。 –

+0

このプログラムだけではありません。引数はプログラムの中には入りません。サークルプログラムの領域を試しました。出力は常に0.000000でした。 @コード戦士 –

+0

実行/実行の結果をコピー&ペーストできますか? –

関連する問題