2013-05-20 10 views
5

Udało mi się wykonać kod C z kodu Java, ale mam pytanie dotyczące, chcę odczytać wartości do zmiennych C, w których program C działa z kodu Java . Jak to zrobić?Odczyt wartości do zmiennych C uruchamianych z kodu Java

Mój kod C będzie następujący.

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; 
} 

i mój kod Java jest następujący.

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(); 
     } 
    } 
} 

Więc, jakie modyfikacje muszę zrobić w kodzie java, tak, że mogę wprowadzić wartości do zmiennych C. Dzięki z góry

Odpowiedz

4

Musisz użyć JNI, a nie ProcessBuilder. Lub musisz zapisać te wartości do pliku i odczytać plik z C. Lub musisz zapisać te wartości do strumienia wejściowego procesu. Które, aby wprowadzić Cię w błąd, nazywa się "outputStream".

Coś jak:

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

a następnie w C odczytać ten ciąg ze standardowego wejścia.

+0

Czy możesz podać dla mnie pseudo kod? – Sankar

+1

Nie, dla JNI to duży temat. Google "samouczek JNI" dla tej opcji. Dla pliku nie powinieneś potrzebować samouczka. – bmargulies