2016-10-01 69 views
-1

我想通过Java运行C代码来打印由用户输入的整数。我正在使用ProcessBuilder类。无法运行并通过Java为C代码提供输入

的Java代码给出相同的输出(stdout:0)为每一个整数,I输入通过outputstream

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要求用户编写,然后按回车。

上面的代码不起作用,因为输入或换行没有给出。 与writer.write(8+"\n");更换线writer.write(8);writer.write(8+"\n")前加process.waitFor(),它会正常工作。

在更换的说法,代码给出stdout:8作为输出。