【问题标题】:Reading Values in to C variables that is running from Java Code将值读入从 Java 代码运行的 C 变量
【发布时间】:2013-05-20 10:53:31
【问题描述】:

我已经成功地从 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 变量中。提前致谢

【问题讨论】:

    标签: java c input


    【解决方案1】:

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

    类似:

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

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

    【讨论】:

    • 不,对于 JNI 来说,这是一个很大的话题。谷歌'JNI教程'该选项。对于文件,您不需要教程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    相关资源
    最近更新 更多