我想通过Java运行C代码来打印用户输入的整数。我正在使用 ProcessBuilder 类。
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 :(得分:0)
在上面的代码中,当C代码first1.exe
执行时,它等待输入。
这里作者只写 8 并且在代码first1.exe
要求用户写 8 并按回车时不执行任何操作。
上面的代码不起作用,因为没有给出输入或换行符。
用writer.write(8);
替换行writer.write(8+"\n");
并在process.waitFor()
之前添加writer.write(8+"\n")
,它将正常工作。
在替换语句时,代码将stdout:8
作为输出。
答案 1 :(得分:0)
使用
process.waitFor();
writer.write(8+"\n");
enter code here