Frage zum C Tutorial (auf tutorials.at)
- tutorials.at
- Beiträge: 10
- Registriert: Mo Jan 19, 2009 2:23 pm
- Wohnort: Wien
- Kontaktdaten:
Re: Frage zum C Tutorial (auf tutorials.at)
Hinweis auf den Betreff ist drin (http://www.tutorials.at/forum.html).
Ich hoffe, dass es damit klarer ist.
Ich hoffe, dass es damit klarer ist.
Webmaster und Autor von Tutorials.at,
überarbeitet und erweitert 2008/2009, mit Tutorials zu C, Pascal und BASIC.
überarbeitet und erweitert 2008/2009, mit Tutorials zu C, Pascal und BASIC.
Re: Frage zum C Tutorial (auf tutorials.at)
Daten von der Tastatur mit scanf() einlesen beziehend auf das Tutorials.at
Damit sich das Fenster bei der Eingabeaufforderung nicht wieder durch scanf schließt kann man ja fflush(stdin) benutzen wie ich das verstanden habe.
Ich musste aber noch ein fflush(sdtin) benutzen damit es bei mir klappt und auf das Beispiel von Tutorials.at war nur ein fflush(stdin) benutzt worden.
Das hat aber Andreas Hammer schon gesagt das es nicht klappen könnte :
Dieses Beispiel kann funktionieren, kann aber auch nicht funktionieren, je nachdem, welchen Compiler und welches Betriebssystem Sie verwenden.
und es liegt wohl am Lcc-win 32.^^
Aber ich habe aber noch andere möglichkeite gefunden damit das Fenster bei der Eingabeaufforderung nicht wieder durch scanf schließt das man das mit dem getchar(); eingibt und mit compiliert.
Und jetzt zu meine Frage kann man das auch unter Linux machen ?
Damit sich das Fenster bei der Eingabeaufforderung nicht wieder durch scanf schließt kann man ja fflush(stdin) benutzen wie ich das verstanden habe.
Code: Alles auswählen
#include <stdio.h>
int main()
{
int zahl1 = 0, zahl2 = 0;
printf ("Geben Sie die erste Zahl ein: ");
scanf ("%3d", &zahl1);
fflush(stdin);
printf ("Geben Sie nun die zweite Zahl ein: ");
scanf ("%d", &zahl2);
fflush(stdin);
printf ("\nDie eingegebenen Zahlen waren:\n");
printf ("zahl1: %d\nzahl2: %d\n", zahl1, zahl2);
getchar();
return 0;
Das hat aber Andreas Hammer schon gesagt das es nicht klappen könnte :
Dieses Beispiel kann funktionieren, kann aber auch nicht funktionieren, je nachdem, welchen Compiler und welches Betriebssystem Sie verwenden.
und es liegt wohl am Lcc-win 32.^^
Aber ich habe aber noch andere möglichkeite gefunden damit das Fenster bei der Eingabeaufforderung nicht wieder durch scanf schließt das man das mit dem getchar(); eingibt und mit compiliert.
Code: Alles auswählen
#include <stdio.h>
int main()
{
int zahl1 = 0, zahl2 = 0;
printf ("Geben Sie die erste Zahl ein: ");
scanf ("%3d", &zahl1);
printf ("Geben Sie nun die zweite Zahl ein: ");
scanf ("%d", &zahl2);
printf ("\nDie eingegebenen Zahlen waren:\n");
printf ("zahl1: %d\nzahl2: %d\n", zahl1, zahl2);
getchar();
getchar();
return 0;
}
Und jetzt zu meine Frage kann man das auch unter Linux machen ?
Zuletzt geändert von Dirty Oerti am Mi Jan 21, 2009 5:44 pm, insgesamt 1-mal geändert.
Grund: Lesbar gemacht (es war ein code-Tag zu viel)
Grund: Lesbar gemacht (es war ein code-Tag zu viel)
C ( Durchschnittlich ) C++ (am Lernen)
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Frage zum C Tutorial (auf tutorials.at)
Am besten ist es, denke ich, wenn du dir deine eigene fflush schreibst.
Sie könnte z.B. so aussehen:
Das müsste theoretisch die Standardausgabe leeren. Getestet habe ich es jetzt nicht.
Wenn es funktioniert (was ich annehme^^), dann sowohl unter Linux als auch unter Windows.#
fat-lobyte hatte da doch mal so eine eigene flush?
Wo ist die hingekommen?
*edit*
hab's gefunden
http://tutorial.proggen.org/doku.php?id ... put-puffer
*/edit*
Sie könnte z.B. so aussehen:
Code: Alles auswählen
void flush (void) {
char trash[11];
while (fgets(trash,10,stdin) != NULL);
}
Wenn es funktioniert (was ich annehme^^), dann sowohl unter Linux als auch unter Windows.#
fat-lobyte hatte da doch mal so eine eigene flush?
Wo ist die hingekommen?
*edit*
hab's gefunden
http://tutorial.proggen.org/doku.php?id ... put-puffer
*/edit*
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Re: Frage zum C Tutorial (auf tutorials.at)
So weit bin ich noch nicht.Code: Alles auswählen
void flush (void) { char trash[11]; while (fgets(trash,10,stdin) != NULL); }
Hat das irgendwas mit schleifen un Arrays zu tun ?
Ich benutze gerade tutorials.at ^^
C ( Durchschnittlich ) C++ (am Lernen)
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Frage zum C Tutorial (auf tutorials.at)
Ja, da hast du ein Array aus 11 Chars und eine Schleife, die solange (nichts) tut bis sie keine Zeichen mehr von der Standardeingabe bekommt.
Das Problem, dass du hast:
fflush kann (!) zu Problemen führen und nicht richtig funktionieren.
Deshalb ist es meistens (!) sinnvoll, sich eine eigene kleine Funktion zu schreiben, die den Eingabepuffer leert.
Eine andere Variante als die meine hier findest du in der FAQ (siehe Link).
Deine Variante, einfach 2 mal getchar einzufügen ist nicht unbedingt gerade funktionstüchtig.
Gib doch am besten mal sowas ein:
12 12 12 12 12 12 12 12 12 gh 12 h h12j 2k31
Wartet dein Programm dann auch noch...?
Unter Linux kannst du das natürlich auch machen
Nochmal zur Sache mit dem Eingabepuffer:
Lies dir den FAQ-Artikel am besten mal durch.
Beschränke dich am besten erstmal auf den C-Teil.
Das Problem, dass du hast:
fflush kann (!) zu Problemen führen und nicht richtig funktionieren.
Deshalb ist es meistens (!) sinnvoll, sich eine eigene kleine Funktion zu schreiben, die den Eingabepuffer leert.
Eine andere Variante als die meine hier findest du in der FAQ (siehe Link).
Deine Variante, einfach 2 mal getchar einzufügen ist nicht unbedingt gerade funktionstüchtig.
Gib doch am besten mal sowas ein:
12 12 12 12 12 12 12 12 12 gh 12 h h12j 2k31
Wartet dein Programm dann auch noch...?
Unter Linux kannst du das natürlich auch machen

Nochmal zur Sache mit dem Eingabepuffer:
Lies dir den FAQ-Artikel am besten mal durch.
Beschränke dich am besten erstmal auf den C-Teil.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
- tutorials.at
- Beiträge: 10
- Registriert: Mo Jan 19, 2009 2:23 pm
- Wohnort: Wien
- Kontaktdaten:
Re: Frage zum C Tutorial (auf tutorials.at)
Hallo,
magst du nicht ein bisschen weiterlesen bevor du Fragen stellst?
Das steht nämlich auch in meinem Tutorial: (gleich darunter)
Ich weiß, es ist sehr bequem, Fragen zu stellen (wenn jemand da ist).
Es gehört aber einfach zum Programmieren lernen dazu:
Ich habe ja gesagt, dass ich alle wesentlichen Fehler/Mängel im C-Tutorial behoben habe.
Das habe ich auch tatsächlich! Dazu gehört fflush(stdin) eben auch dazu.
magst du nicht ein bisschen weiterlesen bevor du Fragen stellst?
Das steht nämlich auch in meinem Tutorial: (gleich darunter)
In Kap. 13.1 kommt dann - nebenbei - die Funktion vor:http://www.tutorials.at/c/03-dateneingabe-ausgabe.html#scanf hat geschrieben:Dieses Beispiel kann funktionieren, kann aber auch nicht funktionieren, je nachdem, welchen Compiler und welches Betriebssystem Sie verwenden. Das ist aber natürlich kein Ansatz, um plattformunabhängigen Code zu schreiben.
Eine Lösung für dieses Problem finden Sie hier [Link] und in Kapitel 13.1. Dazu fehlt Ihnen zum jetzigen Zeitpunkt aber noch das nötige Vorwissen (v.a. über Schleifen und Ausdrücke), weswegen ich den Lösungsansatz hier noch nicht näher vorstelle.
Die funktioniert auch unter Linux.http://www.tutorials.at/c/13-strukturen-dateizugriff.html#Strukturen hat geschrieben:Code: Alles auswählen
void loescheTastaturpuffer() { int c; while( ((c = getchar()) != EOF) && (c != '\n') ) ; }
Ich weiß, es ist sehr bequem, Fragen zu stellen (wenn jemand da ist).
Es gehört aber einfach zum Programmieren lernen dazu:
@ alle anderenhttp://www.tutorials.at/c/c-tutorial.html#Fragen hat geschrieben:Was tun, wenn Sie im Laufe des Tutorials Fragen oder Probleme haben? Probieren Sie bitte zunächst, selbst eine Lösung zu finden bzw. selbst den Fehler in einem Programm zu finden. Stundenlanges Fehlersuchen kommt beim Programmieren hin und wieder vor. Die meisten Fehler lassen sich aber natürlich schneller finden. Eine kurze Pause hilft auch oft. Hier gilt es vor allem, Durchhaltevermögen zu beweisen und so lange dran zu bleiben, bis man den Fehler selbst gefunden hat. Das ist extrem wichtig und gehört zum Programmieren dazu!
Ich habe ja gesagt, dass ich alle wesentlichen Fehler/Mängel im C-Tutorial behoben habe.
Das habe ich auch tatsächlich! Dazu gehört fflush(stdin) eben auch dazu.
Webmaster und Autor von Tutorials.at,
überarbeitet und erweitert 2008/2009, mit Tutorials zu C, Pascal und BASIC.
überarbeitet und erweitert 2008/2009, mit Tutorials zu C, Pascal und BASIC.
Re: Frage zum C Tutorial (auf tutorials.at)
Ich weiß, es ist sehr bequem, Fragen zu stellen (wenn jemand da ist).
Es gehört aber einfach zum Programmieren lernen dazu:
http://www.tutorials.at/c/c-tutorial.html#Fragen hat geschrieben:Was tun, wenn Sie im Laufe des Tutorials Fragen oder Probleme haben? Probieren Sie bitte zunächst, selbst eine Lösung zu finden bzw. selbst den Fehler in einem Programm zu finden. Stundenlanges Fehlersuchen kommt beim Programmieren hin und wieder vor. Die meisten Fehler lassen sich aber natürlich schneller finden. Eine kurze Pause hilft auch oft. Hier gilt es vor allem, Durchhaltevermögen zu beweisen und so lange dran zu bleiben, bis man den Fehler selbst gefunden hat. Das ist extrem wichtig und gehört zum Programmieren dazu!
@ alle anderen
Ich habe ja gesagt, dass ich alle wesentlichen Fehler/Mängel im C-Tutorial behoben habe.
Das habe ich auch tatsächlich! Dazu gehört fflush(stdin) eben auch dazu.
Meine Frage war nur ob die funktion mit dem getchar(); auch unter linux geht oder nicht.^^
C ( Durchschnittlich ) C++ (am Lernen)
- Dirty Oerti
- Beiträge: 2229
- Registriert: Di Jul 08, 2008 5:05 pm
- Wohnort: Thurndorf / Würzburg
Re: Frage zum C Tutorial (auf tutorials.at)
Ja, geht sie.
Nur war deine Lösung nicht optimal/sicher
Deswegen der Hinweis auf die bessere Lösung.
@tutorials.at:
Ich denke, es ist vollkommen ok, wenn jemand hier eine Frage stellt.
Vorallem durchs Fragen lernt man so viel dazu.
Viel mehr, als mans durch Lesen schaffen könnte.
Nur war deine Lösung nicht optimal/sicher

Deswegen der Hinweis auf die bessere Lösung.
@tutorials.at:
Ich denke, es ist vollkommen ok, wenn jemand hier eine Frage stellt.
Vorallem durchs Fragen lernt man so viel dazu.
Viel mehr, als mans durch Lesen schaffen könnte.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne!
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
Ich helfe gerne!

----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.
- tutorials.at
- Beiträge: 10
- Registriert: Mo Jan 19, 2009 2:23 pm
- Wohnort: Wien
- Kontaktdaten:
Re: Frage zum C Tutorial (auf tutorials.at)
Fragen ist sicher besser als Lesen, noch besser ist allerdings Selbst-Ausprobieren.Dirty Oerti hat geschrieben:Ich denke, es ist vollkommen ok, wenn jemand hier eine Frage stellt.
Vorallem durchs Fragen lernt man so viel dazu.
Viel mehr, als mans durch Lesen schaffen könnte.
Ich finde es nur eine extrem schlechte Angewohnheit, ständig jemanden um Hilfe zu bitten.
Als Programmierer muss man einfach selbstständig arbeiten können, und sei es, wenn eine simple Doku gelesen werden muss. Das habe ich versucht und versuche ich, zu vermitteln.
Ich sehe das v.a. aus Autodidakten-Sicht, die Meinung eines Lehrers (Xin) mag dazu anders ausshen.
Ob getchar() auch unter Linux geht, hätte soufian88 z.B. einfach ausprobieren können.
Es gehen übrigens alle Beispiele unter Linux, da ich seit > 5 Jahren auch (fast) nur mehr mit Linux arbeite.
Darum habe ich auch alles unter Linux mit gcc getestet. Alles andere und Nicht-Plattformunabhängiges im Tutorial finde ich - mittlerweile - uninteressant.
getch() und getchar() sind übrigens in Kapitel 10.1 Thema in meinem Tutorial.
Webmaster und Autor von Tutorials.at,
überarbeitet und erweitert 2008/2009, mit Tutorials zu C, Pascal und BASIC.
überarbeitet und erweitert 2008/2009, mit Tutorials zu C, Pascal und BASIC.
Re: Frage zum C Tutorial (auf tutorials.at)
Ja da hast du wohl recht.
Ich Entschuldige mich muss mir mal irgendwo Ubuntu besorgen und erstmal installieren.
War eigentlich nicht aus Faultheit.
Ich hab ja das blöde Vista.
nochmals sorry.
Ich Entschuldige mich muss mir mal irgendwo Ubuntu besorgen und erstmal installieren.
War eigentlich nicht aus Faultheit.
Ich hab ja das blöde Vista.
nochmals sorry.
C ( Durchschnittlich ) C++ (am Lernen)