sscanf Problem

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
  • Moin, habe folgendes Problem:


    Ich will Variablen nicht doppelt auslesen, name, passwort, ... sind ja bereits ausgelesen. Daher: Wie schaffe ich es, dass sscanf die ersten drei überspringt?


    Damit gehts, aber ladet IP, Username und Passwort mit: s[16]s[24]s[16]


    sscanf(string, "e<p<|>{i}s[16]s[24]s[16]iiiiiiiiiiiiS[128]S[128]S[20]>",pInfo[playerid]);


    Dann habe ich, da dies alles strings sind, einfach mal mit i angefangen:


    sscanf(string, "e<p<|>{i}iiiiiiiiiiiiS[128]S[128]S[20]>",pInfo[playerid]);


    Aber so sind alle Werte 0, und außerdem, falls das keine strings gewesen wären, also s[] i s[] hätte ich das auch nicht so hingekriegt.


    Gibt es denn eine andere Variante?


    Mein enum:


    enum Info
    {
    IP[16],
    Name[MAX_PLAYER_NAME],
    Passwort[16],
    Alter,
    Geschlecht,
    Geld,
    Kills,
    Tode,
    gTeam,
    gRank,
    Bank,
    Drugs,
    Uhr,
    AdminRank,
    Banned,
    BanGrund[32],
    AusfuehrenderAdmin[MAX_PLAYER_NAME],
    RegisterDatum,
    Registered,
    druguse,
    gInvite,
    logged,
    HatTutorial
    }


    So wird der String ( von der Query ) dann geladen:


    vollständige Textfelder ID IP Name Passwort Alter Geschlecht Geld Kills Tode gTeam gRank Bank Drugs Uhr AdminRank Banned BanGrund AusfuehrenderAdmin RegisterDatum
    1| |Namö |test |17 |0 |9600|50 |10 |7 |1 |0 |500 |0 |1337 |0 | | |0000-00-00 00:00:00


    Und wenn wir schon dabei sind, wie kann ich zb. einfach einzelne überspringen? Sagen wir, ich will IP nicht auslesen, Name aber schon und Passwort wieder nicht?


    MfG


    /edit: eingerrückt

    Einmal editiert, zuletzt von x0rYyy ()

  • Du versuchst ja dierekt in das ENum zu laden. Wenn du diese 3 sachen jetzt überspringen würdest, würde das die reihenfolge durcheinander bringen und es wird nicht mehr richtig geladen.


    Die einzige möglichkeit die mir da einfällt währe nicht in das komplette enum zu laden, sondern halt jede variable einzeln zu übergeben. Also
    sscanf(string, "p<|>{is[16]s[24]s[16]}iiiiiiiiiiiiS[128]S[128]S[20]",pInfo[playerid][Alter], pInfo[playerid][Geschlecht], pInfo[playerid][Geld], /*usw..*/);

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • Du versuchst ja dierekt in das ENum zu laden. Wenn du diese 3 sachen jetzt überspringen würdest, würde das die reihenfolge durcheinander bringen und es wird nicht mehr richtig geladen.

    Ich will ja nicht unbedingt, dass er die überspringt, sondern so lässt wie sie sind o.ä. Um halt die Sache weniger ressourcenfressender zu machen^^


    und btw.:
    Mein Enum geht ja weiter ( sind ja noch ca. 5 Sachen zusätzlich drinne ) werden die auch geladen? Das wäre ja dann sinnloses laden, ist dann die Methode, wo man alles einzeln macht, schneller und ressourcenschonender?