2016-10-01 3 views
-1

JavaでCコードを実行して、ユーザーが入力した整数を出力したいとします。私はProcessBuilderクラスを使用しています。JavaでCコードへの入力を実行できない

Javaコードは、outputstreamで入力したすべての整数に対して同じ出力(stdout:0)を与えます。

public class test { 
    public static void main(String args[]) throws IOException { 
     String line; 
     ProcessBuilder builder = new ProcessBuilder("first1.exe"); 
     Process process = builder.start(); 
     OutputStream stdin = process.getOutputStream(); 
     InputStream stdout = process.getInputStream(); 
     InputStream err=process.getErrorStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(stdout)); 
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin)); 
     writer.write(8); 
     writer.flush(); 
     line = reader.readLine(); 
     System.out.println("Stdout: " + line); 
    } 
} 

いつも出力得る:

stdout:0 

first1.exeためのCコードである:上記のコードで

#include <stdio.h> 
int main() 
{ 
    int n; 
    scanf("%d",&n); 
    printf("%d",n); 
    return 0; 
} 

答えて

0

使用

process.waitFor(); 
writer.write(8+"\n"); 
enter code here 
0

場合Cコードfirst1.exe実行し、それは入力が与えられるのを待ちます。

ここで筆者はちょうどを書き込み、コードfirst1.exeがとEnterキーを押しますを書くために、ユーザーが必要としながら、何もしません。

入力または改行が指定されていないため、上記のコードは機能しません。 writer.write(8);writer.write(8+"\n");に置き換え、writer.write(8+"\n")の前にprocess.waitFor()を追加すると正常に動作します。

この文を置換すると、コードにstdout:8が出力されます。

関連する問題