![]() |
versteh grad mein C-Programm nicht...
Hi Leute, hab ein klitze kleines Problem...
(siehe oben) ich lerne grad die Programmiersprache C kennen. Meine Programmier umgeben ist noch zurzeit "DEV C++" PHP-Code:
wenn ich das Programm starte kann ich nur x und y eingeben. was ja erstmal gut ist, nur will ich ja auch z eingeben... was mir aufgefallen ist ich benutze ja als Variablentyp int wenn ich nur mit der maus auf x oder y gehe ohne zu klicken kommt "int x, int y" aber wenn ich das mit z mache kommt "float z". mag vllt auch der grund sein warum ich es nicht eintippen kann,was ich aber nicht denke. habt ihr ein Plan woran es liegen könnte? wohl gemerkt ich fang erst an mit der Sprache... |
scanf ist programmiertechnisch nicht sehr gut. Da scanf erstmal aus dem Buffer rausliest. Und in dem steht noch das Enter von der vorherigen eingabe drin. Schau dir mal getchar an. Um normal weiterzuarbeiten solltest du nach jedem scanf ein" getchar();" machen.
|
cool danke für die Antwort.
ich sags mal so... dieses " getchar();" kenn ich noch nicht. diese jetztige Funktion hab ich verstanden, ich mach einfach mal weiter und ich denke mal das diese Funktion auch noch erklärt wird. wie gesagt bin noch anfänger... aber die frage ist ja liegt es nur daran das ich es nicht eintippen kann oder woran sonst? |
Bei mir funktioniert dein S*****, wie es soll...
Wie führst du es denn aus, oder womit? |
Zitat:
Versuch mal beim Compiler den Modus für ausführliche Fehlermeldungen zu aktivieren, z.B. bei gcc -Wall. |
Zitat:
wie schon oben geschrieben und wie für ich es aus? ganz klar. in diesem Programm auf Kimpilieren klicken und danach ausführen. Zitat:
und wegen der Fehlermeldung: es kommt in dem Sinne keine Fehlermeldung wenn ich es kompiliert habe und danach ausführe, öffnet sich ein DOS-Programm. da kann ich x und y eingeben und danach kommt sofort die zahl die größer ist, ohne das ich z eingegeben habe |
Das Grundgerüst lautet immer wie folgt:
Code:
int main() Code:
$ gcc -Wall test.c
Zu Deinem Programm: Code:
scanf("%i",&x); Desweiteren liest "scanf" nur den Format-String ein - nicht mehr, vielleicht weniger (siehe Rückgabewert). D.h., dass der Zeilenumbruch, welcher zum Abschluss der Eingabe eingegeben werden muss, nicht eingelesen wird und noch immer im Eingabepuffer steckt. Dass überhaupt "y" noch eingelesen werden kann, ist schon Glückssache. Im schlimmsten Fall schließt Du die Eingabe für "x" mit Enter ab - das erste "scanf" liest lediglich die eingebene Zahl. Die nachfolgenden "scanf" lesen direkt das Enter aus dem Eingabepuffer, aber keine Zahl ein. Du musst also den Eingabepuffer leeren, bevor Du wieder etwas einlesen kannst. Solltest Du jemals zu diesem Zweck "fflush()" empfohlen bekommen: niemals nutzen - das Verhalten von "fflush()" ist auf Eingabeströmen undefiniert. Besser wäre es bspw. den Puffer nach jedem "scanf" folgendermaßen zu leeren: Code:
while((c = getchar()) != '\n' && c != EOF) |
Zitat:
Zitat:
Probier es einfach mal mit Code:
#include <stdlib.h> |
Zitat:
Zitat:
Also es geht auch, ist aber schlechter Programmierstyle deshalb gleich wieder vergessen und mit int main arbeiten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.