Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Apr 18, 2024 15:51

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Eclipse - Konsolenausgabe
BeitragVerfasst: Mo Apr 14, 2014 17:40 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich bin mit Eclipse und C am basteln.

Solange ich nur printf verwende, funktioniert die interne Console von Eclipse gut.
Bei scanf ist sie nicht mehr zu gebrauchen.
Kann man irgendwo auf die Windows Console (MS-Dos-Eingabeaufforderung) umschalten ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Mo Apr 14, 2014 22:11 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Zumindest bei einer Java Anwendung kann man in Eclipse bei der Run-Configuration im Reiter 'Common' 'Allocate Console' aktivieren (wenn es nicht sogar standardmäßig an ist), damit kann man dann Eingaben entgegennehmen.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Di Apr 15, 2014 17:03 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Er nimmt Eingaben entgegen, aber leider nicht optimal.
Bei folgendem Code, bleibt die Console leer.
Ich kann zwar eine Zahl eingeben und mit <Enter> bestätigen.
Erst anschliessend erscheint auch "Zahl eingeben:", mit dem restlichen Text.

Wen ich die EXE direkt, z.B. in der MS-DOS Eingabeaufforderung starte, dann funktioniert es ohne Probleme.

Code:
  1.     int intzahl;
  2.     printf("Zahl eingeben: ");
  3.     scanf("%d", &intzahl);
  4.     printf("Die eingegebene Zahl ist: %d", intzahl);

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Di Apr 15, 2014 17:18 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 588
Programmiersprache: C++
Das ist kein Problem von Eclipse. Wenn du etwas mit printf() ausgibst, wird es erstmal in einen Buffer geschrieben, aber möglicherweise erst später ausgegeben (aus Geschwindigkeitsgründen, falls du z.B. deinen Ausgabetext Zeichen für Zeichen zusammensetzt). Um eine sofortige Ausgabe zu erzwingen, kannst du entweder fflush() aufrufen oder eine neue Zeile beginnen ("\n" am Ende des Strings).

Btw, gibt es einen Grund warum du C verwendest und nicht gleich C++?

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Di Apr 15, 2014 17:32 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Das ist kein Problem von Eclipse.

Wieso funktioniert es dann, wen ich die EXE direkt in der MS-DOS-Eing. oder im Explorer starte ?

Zitat:
Btw, gibt es einen Grund warum du C verwendest und nicht gleich C++?

Weil ich bei mir im Regal ein altes C-Buch von 1995 gefunden habe. :lol:
Der grundlegende Sprachsyntax ist ja fast gleich oder täusche ich mich da ?

Was hat C++ für Vorteile ausser der Objectorientierung ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Di Apr 15, 2014 17:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 588
Programmiersprache: C++
mathias hat geschrieben:
Wieso funktioniert es dann, wen ich die EXE direkt in der MS-DOS-Eing. oder im Explorer starte ?
Wieviel gepuffert wird, bis es zur endgültigen Ausgabe kommt, hängt natürlich von der Konsole ab. Aber dass überhaupt gepuffert wird, ist ISO-Standard, womit du das Problem grundsätzlich überall hast.

mathias hat geschrieben:
Der grundlegende Sprachsyntax ist ja fast gleich oder täusche ich mich da ?

Was hat C++ für Vorteile ausser der Objectorientierung ?
Die grundlegende Syntax ist ähnlich, das stimmt. Aber die Syntax ist nicht das, was C++ so viel besser macht als C. Ich verstehe nicht ganz, warum Objektorientierung allein für dich nicht schon Grund genug ist, wo du doch aus der Pascal-Ecke kommst (OOP wird dort doch auch eingesetzt, wenn ich mich recht entsinne?).

Aber hier noch ein paar andere:
  • Operator-Overloading (sehr bequem, wenn man mit Vektoren und Matrizen arbeitet! - siehe auch mein Code-Beispiel hier)
  • Templates, insbesondere jene, die dir schon von der STL bereitgestellt werden (std::vector<>, std::list<>, std::queue<> usw.). Die STL-Container sollte man unbedingt einsetzen, es reduziert die Anzahl der Fehler in der Speicherverwaltung enorm.
  • Exception-Handling (wobei es Geschmackssache ist, ob dies vorteilhaft ist, finde ich)

Es gibt noch mehr, aber diese kommen mir als erstes in den Sinn.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Di Apr 15, 2014 18:46 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Um eine sofortige Ausgabe zu erzwingen, kannst du entweder fflush() aufrufen oder eine neue Zeile beginnen ("\n" am Ende des Strings).

Mit "fflush(stdout);" geht es jetzt, das "\n" bringt nichts.
Das Pufferproblem gibt es wohl unter Pascal nicht. Oder vielleicht liegt es daran, das man dort meistens die Unit CRT verwendete. Oder eben, weil das Prgramm direkt unter DOS lief, bei C läuft es da auch ohne Probleme.

Zitat:
Die grundlegende Syntax ist ähnlich, das stimmt. Aber die Syntax ist nicht das, was C++ so viel besser macht als C. Ich verstehe nicht ganz, warum Objektorientierung allein für dich nicht schon Grund genug ist, wo du doch aus der Pascal-Ecke kommst (OOP wird dort doch auch eingesetzt, wenn ich mich recht entsinne?).

Dann wird es wohl besser sein, direkt mit C++ zu beginnen.
Für den Grundsyntax, kann ich ja mein Buch trotzdem noch verwenden, bevor ich es wegschmeisse.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Di Apr 15, 2014 19:30 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
mathias hat geschrieben:
Für den Grundsyntax, kann ich ja mein Buch trotzdem noch verwenden, bevor ich es wegschmeisse.

Mach es nicht, da drinnen steht Kram wie malloc etc. Der einzige Grund weshalb man so etwas in C++ nutzen möchte wäre realloc, aber selbst der ist sehr schwach.
Bedenke bitte, dass spätestens bei C++11 new (das C++-Äquivalent von malloc) nur noch im Kontext von std::unique_ptr/std::shared_ptr verwendet werden sollte.
Eben konsequente Anwendung von RAII.
Dies wird im C-Buch fehlen und auch in alten C++-Büchern. Dabei ist es wichtig, da gerade die konsequente Nutzung dessen Dinge wie Exceptions erst richtig nützlich machen.
Und der Syntax von C++ und Delphi unterscheiden sich eher in Nuancen. Eben so Dinge wie == vs = und if x then vs if (x).

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Mi Apr 16, 2014 21:53 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
In dem Zusammenhang gilt insbesondere: Früher war nicht alles besser.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Mi Apr 16, 2014 22:08 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Kann es sein, das man mit Pascal richtig verwöhnt ist, in Vergleich mit C/C++ ?

Ich denke z.B. an String.
Ich bin gerade mit der Text Ein/Ausgabe mit C++ am basteln.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Mi Apr 16, 2014 22:16 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Nein, du bist nicht verwöhnt. Du nutzt einfach nur die C-Funktionen.
Ein String unter C++ ist std::string bzw. std::wstring.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Do Apr 17, 2014 17:01 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wieso funktioniert dies nicht richtig ?
Wen ich mehr als 10 Zeichen eingebe, dann komme ich aus der Schleife raus.
Bei weniger als 10 Zeichen benutzte bricht es bei <Enter> nicht ab.
Auch bei dieser Zeile erscheint <Enter> nicht, es müsste doch eine 13 kommen.
Ach erscheint nicht jedes Zeichen einzeln, sondern es kommen alle miteinander, wenb ich <Enter> drücke.
Code:
  1. char *Eingabe() {
  2.     fflush(stdout);
  3.     char* name = new char[10];
  4.     int i = 0;
  5.     do {
  6.         std::cin >> name[i];
  7.         i++;
  8.         std::cout << int(name[i - 1]) << ' ';
  9.     } while ((i < 9) && (name[i - 1] != '\n'));
  10.  
  11.     name[i] = '\0';
  12.     return name;
  13. }

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Do Apr 17, 2014 17:11 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Was möchtest du machen?
Ansonsten ist es bis auf std::cout C, nicht C++.
std::cout gibt nicht direkt aus, es muss dafür ein std::endl kommen.
Und wegen Enter: Ist es sicher \n? Oder vielleicht eine Kombination aus \n\r? Und kann es zu char konvertiert werden oder gibt es keinen >> operator dafür?

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Do Apr 17, 2014 17:20 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Weil du C-Strings und C-Zeiger nutzt.
Außer in Ausnahmefällen wenn du einen triftigen Grund hast, solltest du das auf gar keinen Fall machen.

Nutze "std::unique_ptr" und "std::string"!
Sonst hast du bloß eine Menge Komplexität und wenn du nicht genau aufpasst jede Menge Speicherlecks!
"std::string" hat übrigens den ">>"-Operator für Streams überladen.
Damit wäre die gesamte Funktion überflüssig!
Code:
  1. std::string InputStr;
  2. std::cin >> InputStr;


Während man bei Java mit Vorwissen und einem nach einem kleinen Überblick über die Sprache vielleicht eher direkt so loslegen kann, ist es in C++ schon sehr sehr stark zu empfehlen, das man vorher sich mit den Grundlagen der Sprache in Form eine Tutorials(Zb. das sieht ok aus) oder besser Buches aneignet und Übungen dazu macht. (zb. "C++ lernen und professionell anwenden")
Ich kann dir aus eigener Erfahrung berichten, das sonst wahrscheinlich wenig Sinnvolles dabei rauskommt. (Siehe Code) Die Sprache erfordert einfach ein bisschen Hintergrundwissen und der Programmierer sollte wissen was er tut.
Und nein, prinzipiell bist du nicht verwöhnt. C++ hindert dich bloß nicht daran, es falsch zu machen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Eclipse - Konsolenausgabe
BeitragVerfasst: Sa Apr 19, 2014 13:17 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Oder - um mal was ganz anderes Vorzuschlagen: Nimm Java. Ist eine C-Artige Syntax aber deutlich besser in Eclipse integriert. Und du bekommst dort die Klasse String die genau so funktioniert wie du dir das vorstellst.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 36 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.357s | 18 Queries | GZIP : On ]