Kleines C Prob!

Hi!
Ich habe mich heute mal an C rangewagt!
Und hab dabei folgendes geschriben:
Code:
#include <stdio.h>

void main (void)
{
  float zahl_1, zahl_2;
  char rechzeichen;
  printf("\nGib bitte die 1. Zahl zum rechnen ein: ");
  scanf ("%f", zahl_1)
  printf("\nGib bitte nun die 2. Zahl zum rechnen ein: ");
  scanf ("%f", zahl_2)
  printf("\nGib bitte als letztes das zu verwendene Rechenzeichen ein: ");
  scanf ("%c", rechzeichen);
  if (rechzeichen == "+")
     prinft("\n%d + %d = %d",zahl_1,zahl_2, zahl_1 + zahl_2);
     getch()
}
Ich habe dabei 2 Probleme bis jetzt:
1. Gib ich bei "Gib 1. Zahl ein" eine Komazahl ein überspringt er "Gib Zahl 2 ein",
bei einer Zahl ohne Koma macht passiert das nicht! Wenn ich bei "Gib Zahl 2 ein"
eine Komazahl eingebe überspringt er die nächste Eingabe nicht!
2. Wenn ich bei der Char Eingabe ein "+" eingebe mach er keine Überprüfung!
Kann mir jemand helfen?
Euer STS
 
Versuch nach den Eingaben, die für das Überspringen verantwortlich sind
fflush(stdin) reinzusetzen.
Ich vermute, dass scanf das '\n' zeichen, das beim Enter-drücken in den Eingabestrom fließt, aus ihm nicht entfernt.
Deshalb liest das zweite scanf als erstes zeichen das '\n' und es passiert nichts.
Das ist nur eine Vermutung und kann auch falsch sein.
Ich würde auch mal scanf("%f\n", &zahl_1) ausprobieren, vielleicht hilfts ja
 
Zuletzt bearbeitet:
Hi!
Danke erstmal für den Tipp mit dem fflush(stdin) hat geklappt
nur das If Problem ist noch vorhanden! Aber danke schonmal!^^
Kann jetzt jemand nur noch das If Problem lösen?
Euer STS

P.S: Was bewirkt eigentlich der Befehl fflush(stdin)?
 
"+" ist kein einzelnes Zeichen, sondern ein C-String mit Endnull. Du musst für einzelne char die einfachen Anführungszeichen verwenden, dann sollte es klappen:
Code:
if (rechzeichen == '+')
 
Bei deinem Beispielcode sind so eingie Fehler drin.
Hier die Verbesserungen(fett hervorgehoben):
Code:
scanf("%f", &zahl_1);
...
scanf("%f", &zahl_2);
...
scanf ("%c", &rechzeichen);
...
if (rechzeichen == '+')
...
printf("\n%f + %f = %f", zahl_1, zahl_2,  zahl_1 + zahl_2);
...
getchar();
Zu deinem plus-zeichen: versuchs mit noch einem fflush(stdin)
vor scanf ("%c", &rechzeichen);
 
Zuletzt bearbeitet:
Zurück