0

以下のcプログラムには、ユーザー入力と一致する場合、2つの引数a、bがあり、値を出力します。Java で c execute file を実行しようとしましたが、execute fileProcessBuilderが読み込まれません。

Java コード

import java.io.*;
import java.lang.Runtime;
import java.lang.*;
import java.io.File;
import java.lang.ProcessBuilder;
public class arg
{
 public static void main(String[] args)
 {
  try
  {
   ProcessBuilder pb = new ProcessBuilder("path","-args[1]", "-args[2]");
   pb.redirectErrorStream(true); 
   Process p = pb.start();
   String s;
   BufferedReader stdInput = new BufferedReader(new 
                                           InputStreamReader(p.getInputStream()));
   BufferedReader stdError = new BufferedReader(new 
                                           InputStreamReader(p.getErrorStream()));
   OutputStream stdOutput =   p.getOutputStream();                      
   stdOutput.close();
   while ((s = stdInput.readLine()) != null)
   { System.out.println(s);    }    
     System.out.println("Done.");
     stdInput.close();              
  }//try
  catch (IOException ex) { ex.printStackTrace();    }
    } //void
  } //main

cコード

   #include <stdio.h>
   #include <sys/timeb.h>
   #include <string.h>
   main(int argc, char **argv)
   {
   setbuf(stdout, NULL);
   int i=1,j,n;
   char a,b;
   for (i=0; i<argc; i++)   
   { printf("%s\n", argv[i]); }

     if(!strcmp(argv[1],"a"))
     {
       if(!strcmp(argv[2], "b"))
       {    
       for( j = 0; j<= 4; j++ ) 
        { printf("Iteration[%d] %d\n",j, j); }
       }
       return 0 ;
    }
   } //main
4

2 に答える 2

0

おそらく次のように書きたいと思うでしょう:

if (args.length >= 2)
    ProcessBuilder pb = new ProcessBuilder("path","-" + args[0], "-" + args[1]");

また、Java 引数は 1 からではなく 0 からインデックス付けされます。C のように最初の引数にプログラム名はありません。

于 2013-05-16T08:45:18.983 に答える