Subtraktion
-
hi DonnerKeks
erstmal danke ich dir sehr, dass du dir so spät noch die Zeit genommen hast mir zu helfen
.
Mit deiner Version, die du gemacht hast kam ich auf diese Ausgabe:
Dieses Programm f�hrt eine Subtraktion durch ------------------------------------------------------- Geben Sie eine Zahl ein: 20 Zahl: 12 Weitere Zahl eingeben? (J)a::(N)ein: Zahl: 6 Weitere Zahl eingeben? (J)a::(N)ein: Zahl: n Weitere Zahl eingeben? (J)a::(N)ein: Ihr Endergebnis ist: -4.
Ich hatte nicht die Möglichkeit die Frage zu beantworten. Wenn ich mit j beantworte kommt die Frage nochmal.
Durch deine Hilfe habe ich aber geschafft meine Version noch zu erweitern und habs auch hinbekommen.
#include <stdio.h> #include <stdlib.h> int main() { char Eingabe; float Zahl; float Ergebnis; printf("Das Programm fuehrt eine Subtraktion durch!\n"); printf("Bitte geben Sie die Zahl ein: "); scanf("%f", &Ergebnis); printf("Moechten Sie das Programm noch benutzen? j/n: "); scanf("%s", &Eingabe); while(Eingabe == 'j') { printf("Bitte geben Sie die naechste Zahl ein: "); scanf("%f",&Zahl); Ergebnis = Ergebnis - Zahl; printf("Moechten Sie noch eine Zahl eingeben? j/n: "); scanf("%s", &Eingabe); } printf("Die Differenz betraegt: %.3f\n", Ergebnis); return EXIT_SUCCESS; }
-
hmmm ok
also bei mir schaut das ganze so aus,Dieses Programm führt eine Substraktion durch ---------------------------------------------- Geben Sie eine zahl ein: 10 Zahl: 4 Weitere Zahl eingeben? (J)a::(N)ein: j Zahl: 2 Weitere Zahl eingeben? (J)a::(N)ein: n Ihr Endergebnis ist 4
aber ist ja nicht schlimm.
Wenn du dein Programm zum laufen gebracht hast,
passt ja alles
-
Ich habe die Posts eben nur überflogen, wollte aber noch anmerken, dass du bei scanf aufpassen musst, dass noch ein newline-Zeichen im Puffer hockt. Wenn du jetzt ein weiteres scanf aufrufst wird das newline, welches noch im Puffer steht, eingelesen und es schaut so als, als ob das scanf übersprungen wird.
-
Du musst auch aufpassen dass du in scanf die Formatierungszeichen verwendest.
%s steht für einen String. Wenn du nur EIN Buchstabe einlesen willst solltest du %c nehmen, alsoscanf("%c", &Eingabe);
-
Binggi schrieb:
%s steht für einen String. Wenn du nur EIN Buchstabe einlesen willst solltest du
getchar() nehmen.
-
eigentlich solltes du lieber
fscanf(stdin, "%s", s_string);
fprintf(stdout, "%s", s_string);verweden um undefiniertes Verhalten zu vermeiden
mit freundlichen Grüßen
-
O.o schrieb:
eigentlich solltes du lieber
fscanf(stdin, "%s", s_string);
fprintf(stdout, "%s", s_string);verweden um undefiniertes Verhalten zu vermeiden
Was unterscheidet denn ein
printf("%s", s_string)
von einemfprintf(stdout, "%s", s_string)
?
-
Nicht viel
lediglich Geschmackssache und ich finde
es übersichtlicher.auch sollte man statt scanf(); lieber scanf_s(); verwenden,
damit es nicht zu einem Buffer Overflow kommen kann.Wenn man das allerdings nur als Freizeitbeschäftigung macht,
muss es einen nicht umbedingt interessieren
-
O.o schrieb:
Nicht viel
lediglich Geschmackssache und ich finde
es übersichtlicher.Was jetzt, undefiniert oder Geschmackssache?
O.o schrieb:
auch sollte man statt scanf(); lieber scanf_s(); verwenden,
damit es nicht zu einem Buffer Overflow kommen kann.scanf_s()? Was ist denn das?
O.o schrieb:
Wenn man das allerdings nur als Freizeitbeschäftigung macht,
muss es einen nicht umbedingt interessierenWenn es dich nicht umbedingt interessiert, warum dann darüber reden?
-
einigen wir uns auf undefinierte Geschmackssache? :p
mich interessiert es schon irgendwie...
ich weis auch nicht wiesoscanf_s == scanf nur, dass es bei scanf_s nicht
zu einem buffer overflow kommen kann. Allerdings
wird die Funktion nicht von allen Compilern unterstüzt
und ist demach auch nicht einfach portable.schönen Abend noch
-
O.o schrieb:
scanf_s == scanf nur, dass es bei scanf_s nicht
zu einem buffer overflow kommen kann.Die Funktion scanf kann man so benutzen, dass es zu keinem Pufferüberlauf kommt, indem man die maximale Anzahl der einzulesenden Zeichen im Formatstring festlegt.
-
vielen dank an euch alle