[gelöst] scanf auf Länge prüfen



  • Hallo,

    ich möchte erreichen, dass der Benutzer nur 20 Zeichen eingeben kann. Wenn er mehr eingibt, soll eine Fehlermeldung erscheinen. Dies soll solange wiederholt werden, bis eine korrekte Eingabe gemacht wurde.

    Hier erstmal mein Code.

    char buf[20];
    char *c;
    int i = 0;
        printf("Bitte geben Sie den Artikelnamen ein(max. 20 Zeichen): ");	
          do
            {
               scanf("%s", buf);									
               for ( c = buf; *c; c++ )
                {
                    i++;						
                }
               if(i>20)
                  printf("Bitte geben Sie nur 20 Stellen ein: ");
    
               else if(i<=20)
                  break;	
    
             }while(true);
    

    Egal was ich eingebe, es wird immer das printf von if(i>20) ausgegeben. Kann mir jemand sagen, warum das so ist und wie ich den verändern muss?

    Schonmal vielen Dank für eure Antworten!!!



  • in buf[20] passen nur 19 wegen des \0 am Stringende
    Für sowas gibts dann strlen
    int laenge;
    laenge = strlen(buf);
    if (laenge >.....



  • Vielen Dank!
    Funktioniert wie gewünscht 😃


Anmelden zum Antworten