sscanf funktioniert nicht!

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
  • Folgendes gibt "Fehler im SSCANF" aus, aber warum? ?(
    new shID = random(cID)+1,Float:shPosX,Float:shPosY,Float:shPosZ;
    format(query, sizeof(query),"SELECT * FROM Positions WHERE ID='%d'",shID);
    mysql_query(query);
    mysql_store_result(); new resultline[200];


    if(mysql_fetch_row_format(resultline,"|"))
    {
    new ret = sscanf(resultline,"p<|>ifff",shID,shPosX,shPosY,shPosZ);
    if(ret == -1)print("Fehler im SSCANF");
    }
    mysql_free_result();





    Folgende Query gibt für jede Variable 0 aus


    mysql_query("SELECT * FROM `div` WHERE `var` = '1'");
    mysql_store_result(); new resultline[200],remove;
    if(mysql_fetch_row_format(resultline))
    {
    sscanf(resultline,"p<|>dddddddddd",remove,dVar[0][0],dVar[0][1],dVar[1][0],dVar[1][1],dVar[2][0],dVar[2][1],dVar[3][0],dVar[3][1]);
    }
    else printf("MySQL-Query Fehler");
    mysql_free_result();


    Warum? :D


    mfg HB :thumbup:

    3 Mal editiert, zuletzt von H4rd_B4se ()

  • Damit kann man angeben mit welchem Zeichen der String gesplitet werden soll.


    Du hast übrings ein d zuviel in deiner sscanf abfrage.
    Es sind nur 9 rückgabe Werte, du verlangst aber 10.


    Sollte das Problem lösen :)


    Das Problem ist leider nicht gelöst :D


    /e kann es an sscanf liegen?


    Habsn bisschen abgeändert zum probieren, aber es geht immer noch nichts
    mysql_store_result(); new resultline[200],tagRemove,tagRemove1,tagRemove2,tagRemove3,tagRemove4,tagRemove5,tagRemove6,tagRemove7,tagRemove8;
    if(mysql_fetch_row_format(resultline,"-"))
    {
    printf(resultline);
    sscanf(resultline,"p<->ddddddddd",tagRemove,tagRemove1,tagRemove2,tagRemove3,tagRemove4,tagRemove5,tagRemove6,tagRemove7,tagRemove8);
    }
    else printf("MySQL-Query Fehler");
    mysql_free_result();
    printf("Erfolgreich geladen, (%d) %d : %d ; %d : %d ; %d : %d ; %d : %d",tagRemove,tagRemove1,tagRemove2,tagRemove3,tagRemove4,tagRemove5,tagRemove6,tagRemove7,tagRemove8);


    /e push

    3 Mal editiert, zuletzt von H4rd_B4se ()

  • In deinen 1 Post hast du bei mysql_fetch_row_format(resultline) kein Delimiter.


    resultline ist

    Wie du an deiner resultline siehst willst du ja die Striche filtern.

  • Folgendes gibt "Fehler im SSCANF" aus.
    resultline ist:

    Code
    1|50|40|15


    new shID = random(cID)+1,Float:shPosX,Float:shPosY,Float:shPosZ;
    format(query, sizeof(query),"SELECT * FROM Positions WHERE ID='%d'",shID);
    mysql_query(query);
    mysql_store_result(); new resultline[200];


    if(mysql_fetch_row_format(resultline,"|"))
    {
    //explode(newload,resultline,"|");
    new ret = sscanf(resultline,"p<|>ifff",shID,shPosX,shPosY,shPosZ);
    if(ret == -1)print("Fehler im SSCANF");
    }
    mysql_free_result();


    Warum gehts nicht?


    /e neuer Code

    4 Mal editiert, zuletzt von H4rd_B4se ()

  • Warum es nicht geht kann ich dir nicht sagen, ich kann dir aber sagen, wie du es zum laufen bekommst. In diesem Topic: MYSQL Lädt falsche werte war genau das selbe Problem vorhanden. Diese manuelle Methode benutzt kein sscanf (Ich verzichte ganz bewusst schon immer auf sscanf.) und funktioniert immer. Ich hatte damit noch nie Probleme die mir unerklärlich waren.
    Du musst eben den Code an deinen anpassen, aber das wirst du hinbekommen, wenn nicht einfach Bescheid geben.

  • Was natürlich auch sein kann das du den stock sscanf nützt. Das darfst du bei sowas nicht da dieser stock sowas nicht kann.


    Da musst du die include sscanf2 nützen.


    Diese funktioniert jedoch bei mir nicht, denn da kommt immer folgender Fehler sscanf error: System not initialised.
    Die Problembehandlung hab ich allerdings schon 10 mal durchgeführt ^^