Scanf und Bereichsangaben



  • Hallo Leute
    Ich möchte mit scanf etwas einlesen

    if ( !(sscanf(ZEILE,"%u;%u;%[V A R];......;" ,...,...,&STATUS,...,...,...,...,...,...,...,...)==11){
    
    ....
    }
    

    STATUS ist ein char

    char STATUS = "";

    den char den ich dort einlesen will ist als enum deklariert...

    enum Status
    {
      V,
      A,
      R
    };
    

    die abfrage ist in eine while gebettet, das läuft soweit ganz gut durch, nur wenn aus der funktion rausgesprungen wird ganz am ende, dann kommt ein Fehler:

    Run-Time Check Failure #2 - Stack around the variable 'STATUS' was corrupted.

    Wie kommt das?
    Kann mir jemand helfen?

    MFG
    Luke



  • scanf() mit %[] will kein einzelnes Zeichen zurückgeben, sondern einen String - und dafür reicht der Platz, den du angeboten hast, nicht aus. Du könntest mit %c ein Zeichen einlesen und im Nachhinein kontrollieren, ob es in deinen Wertebereich passt.



  • hmm, ja das habe ich auch schon gedacht, aber wenn ich das mache dann funktioniert irgendwie eine andere Funktion nicht mehr richtig die ich dort auch aufrufe...
    bzw die funktioniert schon, aber die parameter die übergeben werden sollen haben die falschen Werte,,,ka wie das kommt

    muss ich halt noch rumprobieren, da funktioniert im rest des Programms auch einiges noch nicht, das werde ich erst fixen müssen!

    trotzdem danke!


Anmelden zum Antworten