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 auch std::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?


Anmelden zum Antworten