Hilfe bei einem programm... scanf will nichts einlesen
-
moin moin,
durch mein Studium lerne ich gerade die Programmiersprache C
nun habe ich die Aufgabe bekommen einen Taschenrechner zu programmieren... dieser soll mit if else funktionieren.
Das hat auch alles gut geklappt nur als ich am Ende eine Funktion einbauen wollte die den Benutzer wieder an den Anfang des Programmes schickt gab es ein paar Probleme...//SphinX #include <stdio.h> #include <stdlib.h> int main() { float a,b; char x; wchar_t z; Labelmain: printf("\n\n--------------------------------------\n"); printf("Bitte gib die Rechnung ein:\n\n"); scanf("%f%c%f",&a,&x,&b); if (x=='+') printf("%f + %f = %f \n",a ,b ,a+b); else if (x=='-') printf("%f – %f = %f \n", a, b, a-b); else if (x=='*') printf("%f * %f = %f \n", a, b, a*b); else if (x=='/') printf("%f / %f = %f \n", a, b, a/b); else {printf("%c? Das ist kein Rechenoperator!!! \n", x); goto Labelmain;} printf("\n\n NOCH MEHR RECHENEN?! ja oder nein?!\n"); scanf("%lc" ,&z); if (z=='j') {printf("OK!"); goto Labelmain;} else if (z=='ja') {printf("OK!"); goto Labelmain;} else if (z=='n') printf("Ok... vielleicht spaeter :P\n"); else if (z=='nein') printf("Ok... vielleicht spaeter :P\n"); else {printf("Das ist kein Ja und kein Nein!!!\nAlso JA!!!! \n"); goto Labelmain;} return 0; }
Leider bekomme ich nicht die Möglichkeit 'z' ein zu geben, da der Computer 'z' scheinbar aus einer anderen Quelle bezieht... wenn ich 'z' nicht als char sondern als int benutze funktioniert alles und ich kann eine zahl eingeben. Kann mir jemand sagen wo das Problem ist?^^
ich habe schon z nicht mehr als normalen char deklariert sondern als wchar_t das brachte aber leider auch nichts
danke schon mal im Voraus
SpphinxX
-
Dass wchar_t vergiss mal schnell wieder, widechar Handling ist für Anfänger ungeeignet, nimm einfach char und lösche den Tastaturpuffer nach jedem scanf, z.B. mit
while('\n'!=getchar());
dann schlagen die dort sonst noch vorhandenen Zeichen nicht auf folgende scanf durch.
-
super hab wchar_t ganz schnell wieder vergessen und
while('\n'!=getchar());
eingebaut und jetzt geht alles wie ich es haben will
danke
-
Und das wchar_t abhängige "%lc" und evtl. noch andere von dir verwendete wchar_t Formatspezifizierer müssen dann natürlich auch weg ('l' einfach weglassen).