Freitag, 20. Januar 2012

Keine Ausgabe in der Eclipse Console für printf

Windows 7 SP1
Eclipse IDE for C/C++ Developers Version: Indigo Service Release 1

Verwendet man unter Windows printf in seinem C Programm und erwartet sich beim Ausführen eine Ausgabe auf der Eclipseconsole muß darauf warten bis das Programm beendet ist. Sind noch einige scanf drinnen muß man die Daten "blind" eingeben.

Dieses Verhalten ist dem Windowseclipse geschuldet, Einstellungen wie man dieses Verhalten direkt in Eclipse verändern kann habe ich leider keine gefunden.

Allerdings 2 Wege wie man die Ausgabe trotzdem bekommt.
(Da in der Codedarstellung die spitzen Klammern Probleme machen habe ich in den Codebeispielen das include von stdio.h weggelassen.)

1. fflush(stdout) nach printf();


main(){
 int wahl;
 float betrag;
 printf("\n\tE U R O R E C H N E R\n");
 printf("\n1 DM --> EURO\n2 EURO --> DM");
 printf("\n\nIhre Wahl: ");
 fflush(stdout);
 scanf("%i", &wahl);
 if(wahl == 1){
  printf("Bitte DM-BEtrag eingeben: ");
  fflush(stdout);
  scanf("%f", &betrag);
  printf("\n%.2f DM sind %.2f EURO", betrag, betrag * 0.51129);
 }
 if (wahl == 2){
  printf("Bitte EURO-Betrag eingeben: ");
  fflush(stdout);
  scanf("%f", &betrag);
  printf("\n%.2f EURO sind %.2f DM", betrag, betrag * 1.95583);
 }
}



2. setvbuf in der main methode


main(){
 setvbuf(stdout, NULL, _IONBF, 0);
 setvbuf(stderr, NULL, _IONBF, 0);
 int wahl;
 float betrag;
 printf("\n\tE U R O R E C H N E R\n");
 printf("\n1 DM --> EURO\n2 EURO --> DM");
 printf("\n\nIhre Wahl: ");
 scanf("%i", &wahl);
 if(wahl == 1){
  printf("Bitte DM-BEtrag eingeben: ");
  scanf("%f", &betrag);
  printf("\n%.2f DM sind %.2f EURO", betrag, betrag * 0.51129);
 }
 if (wahl == 2){
  printf("Bitte EURO-Betrag eingeben: ");
  scanf("%f", &betrag);
  printf("\n%.2f EURO sind %.2f DM", betrag, betrag * 1.95583);
 }
}

Links:
Eclipse Forum Eintrag

Keine Kommentare:

Kommentar veröffentlichen