Problem beim strcmp

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey Leute ich habe ein Problem, und zwar habe ich mit Hilfe von strcmp ein Command geschrieben der mehrere Parameter braucht jedoch wird der befehl nur bis zum ersten Parameter ausgeführt




    Beispiel
    /fraktion create //das Funktioniert


    jedoch jetzt
    /fraktion create 10000 10000 1000 0 0 Grove//das geht nicht da passiert garnichts


    Code

    Hoffe ihr könnt mir helfen

  • Das ist ja der Unterschied der befehl soll ja durch mehrere durch Switchen


    z.b


    mall ist der befehl


    /fraktion create wo er 6 Parameter hat



    und mall ist r


    /fraktion info wo er nur ein Parameter hat


    das ist mein Problem, die Strings und Ints wechseln immer wieder

  • Du musst fest angeben wie viele Parameter der Befehl hat, wenn er unterschiedlich viele haben soll je nach info oder create würde ich im Befehl nach "create" per strfind params suchen. Wenn gefunden alles so wie immer machen nur mit 6 parametern, ansonsten mit 1 parameter in sscanf.

  • Es tut mir sehr leid das ich dich weiter stören muss jedoch habe ich noch nie damit gearbeitet, deswegen habe ich keine Ahnung wie ich das ein bauen soll und übersetzen soll in der Wiki ist das zwar aufgelistet aber ich weiß trotzdem nicht wie ich das verwende

  • Du könntest dir einfach mal item per print/printf ausgeben. Dann würdest du sehen, dass dort alles nach /fraktion steht und nicht nur das 1. Wort.
    Gibst du "/fraktion create 10000 10000 1000 0 0 Grove" ein, dann ist item:
    create 10000 10000 1000 0 0 Grove


    Da ich nicht sehe ob du sscanf1 oder sscanf2 benutzt, kann man das Problem auch über strcmp lösen.
    [wiki]Strcmp[/wiki]
    Man kann auch den Parameter length angeben, dann werden nur diese Zeichen geprüft.


    if(!strcmp(item, "create", false,6)) // item oder params; false würde ich in true ändern. Sonst ist CrEaTe nicht gleich create
    bzw
    if(!strcmp(item, "info", false,4)) // item oder params; false würde ich in true ändern. Sonst ist CrEaTe nicht gleich create