5

我已经成功地从 Java 代码执行了 C 代码,但是我有一个问题,我想将值读入 C 程序从 Java 代码运行的 C 变量中。怎么做?

我的 C 代码如下。

int main()
{ 
    int op;
    printf("\n Hello World... ");
    printf("\n Enter any value : ");
    scanf("%d",&op);
    printf("\n The value entered is : %d",op);
    getch();
    return 0;
}

我的java代码如下。

import java.io.*;
public class Test {
   public static void main(String args[]) {
      try {
            String s = " ";
            Process processCompile = Runtime.getRuntime().exec("e:/Sample.exe");

            BufferedReader stdInput = new BufferedReader(new
            InputStreamReader(processCompile .getInputStream()));
            // read the output from the command
            System.out.println("EXE OUTPUT");
            while ((s = stdInput.readLine()) != null) {
               System.out.println(s);
           }
        } catch(Exception ex) {
            ex.printStackTrace();
        }
    }
}

那么,我必须在 java 代码中进行哪些修改,以便我可以将值输入到 C 变量中。提前致谢

4

1 回答 1

4

您需要使用 JNI,而不是 ProcessBuilder。或者您需要将这些值写入文件并从 C 中读取文件。或者您需要将这些值写入流程输入流。让你感到困惑的是,它被称为“输出流”。

就像是:

OutputStreamWriter osw = new OutputStreamWriter(process.getOutputStream(), "utf-8");
osw.append(String.format("value1=%d value2=%d", value1, value2));
osw.flush();

然后在 C 中从标准输入读取该字符串。

于 2013-05-20T10:55:36.383 回答