Problem mit strncmp(char* str, "Text", int n)



  • Nach etwas längerer versuchter Problemlösung komm ich nicht weiter. Ich mach wohl irgendwo einen Fehler, den ich nicht als solchen erkenne.

    Folgendes Problem:
    Ich habe eine char-Variable deklariert.

    char fieldname[26];
    

    Anschließend benutze ich eine Funktion,

    bekommeText(fieldname)
    

    die ich selber aber nicht einsehen kann,
    der ich den Zeiger auf meine char-Variable übergeben muss,
    und bekomme dafür einen bestimmten Text zurück.
    Hier als Beispiel "Velocity".

    cout << fieldname << endl;
    

    liefert mir also "Velocity".

    Anschließend soll der in fieldname abgelegte Text verglichen werden und zwar in der Form:

    if(strncmp(fieldname, "Velocity", strlen("Velocity")) == 0)
    {
     //tue irgendwas
    }
    if(strncmp(fieldname, "Length", strlen("Length")) == 0)
    {
     //...
    }
    else
    {
     cout << "Fehler!" << endl;
    }
    

    Soweit hab ich trotz mehrmaligen Lesen keinen Fehler gefunden.
    Ich bekomme aber ausnahmlos als Ausgabe: "Fehler!"
    Wo mache ich da etwas falsch?



  • Wird denn // tue was auch ausgeführt?

    Tipp: else if statt if (ab der zweiten Bedingung).



  • Das else bezieht sich immer nur auf das letzte if.

    Wenn es sich auf alle ifs beziehen soll, bau eine if/else if-Kaskade auf.



  • also das "//tue irgendwas" wird nicht ausgeführt.
    es wird sozusagen übersprungen.



  • also ich hab die if/else-Kaskade aufgebaut.
    Die Fehlermeldung tritt jetzt auch nicht mehr auf.
    Somit wäre das strncmp-Problem gelöst.
    Danke!
    Aber die if/else-Verschachtelungen hab ich immer total vernachlässigt.


Anmelden zum Antworten