scanf funktioniert nur manchmal
-
Hallo ich habe gleich zwei Fragen. Ich bin ein Anfänger und verstehe nicht ganz wieso mit der Funktion scanf mein code nicht funktioniert. Wenn ich die Zahlen von 1 und 2 auf bspw. 15 und 16 ändere funktioniert es meistens beim zweiten Mal. Mit 1 und 2 bin ich aber in der while- Schleife gefangen.
Zudem wird immer die 1 oder zwei ausgegeben. Die Zahl stimmt von der Eingabe her..
Hilfe wäre echt nett. Vielen Dank im voraus.
Hier der Code :int main(int argc, char* argv[]) { // Integer to save the Menu - item. int itemmenu; std::cout << "Welcome to the programm" << std::endl; std::cout << "Please Choose what you want to do" << std::endl; std::cout << "1: Print Serialnumber" << std::endl; std::cout << "2: Print QR - Code" << std::endl; std::cout << "Enter Number to choose" << std::endl; scanf(" %d", &itemmenu); printf("the number you choosed is: %d \n", itemmenu); while (itemmenu != 1 || itemmenu != 2) { std::cout << "You entered a wrong number" << std::endl; std::cout << "Enter a valid number" << std::endl; std::cout << "1: Print Serialnumber" << std::endl; std::cout << "2: Print QR - Code" << std::endl; scanf(" %d", &itemmenu); } switch (itemmenu) { case 1: printnumber(); case 2: printqr(); } return 0; }
-
while (itemmenu != 1 || itemmenu != 2)
Die Bedingung ist immer wahr, du möchtest wohl
&&
stattdessen.Mit C++ solltest du äquivalent zu
std::cout
auchstd::cin
benutzen.
-
Danke Th69 das wars. Ein kleiner Denkfehler
-
@Aousui sagte in scanf funktioniert nur manchmal:
scanf(" %d", &itemmenu);
Das Leerzeichen vor dem % ist bei dem Formatspecifier d nicht nötig, da der schon selber führende Whitespace überliest.
Warum kein
cin
?