[C/PAWN] Objektformate umwandeln, Programm dafuer..

  • Ich gruesse euch liebe Community,



    Aktuell programmiere ich durch mein Studium nun gut ein halbes Jahr in C, jedoch weiss ich nicht wie ich folgendes realisieren kann.
    Ich bin es inzwischen leid die Online Converter zu nutzen, vorallem bei fetten Objektmengen ab 40000 funktionieren die allesamt nicht mehr.



    Ich habe eine Datei A, Textdatei mit folgendem Beispielinhalt:
    [...]
    CreateObject(1794,268.0996100,1881.5000000,-31.4000000,0.0000000,0.0000000,0.0000000);
    [...]




    Das ganze soll in folgendes Format umgewandelt werden, in eine Datei B:



    [...]
    <object id="object (LOW_BED_3) (1)" breakable="true" interior="0" collisions="true" alpha="255" model="1794" doublesided="false" scale="1" dimension="0" posX="268.09961" posY="1881.5" posZ="-31.4" rotX="0" rotY="0" rotZ="0"></object>
    [...]



    Wie kann ich das umsetzen ? Hat jemand da einen Ansatz?


    Habe den Ansatz mit strfind und strtok zu arbeiten, das wird aber bestimmt sehr haesslich. Oder alternativ sscanf?


    Einmal editiert, zuletzt von Sub Royal ()

  • Habe gerade nicht viel Zeit, aber falls es nicht kompiliert, ist hier schonmal ein Fehler: Du musst den String escapen, also statt
    "<object id="%d"...>" zB "<object id='%d'...>" oder "<object id=\"%d\"...>".
    Da sonst der Compiler denkt, der String endet bereits nach dem zweiten ".

  • Danke, dass mit dem \"%d\" hat geholfen!


    Leider funktioniert das ganze mit sscanf wohl noch nicht so richtig, habe ich da vielleicht was falsch gemacht?


    Output ist:


    /e:

    C
    <object id="1" breakable="true" interior="0" collisions="true" alpha="255" model="0" doublesided="false" scale="1" dimension="0" posX="0.000000" posY="0.000000" posZ="0.000000" rotX="0.000000" rotY="0.000000" rotZ="0.000000"></object>


    Also alles 0

    Einmal editiert, zuletzt von Sub Royal ()

  • sscanf trennt auch nach einem Leerzeichen, bei dir sind es ja offensichtlich kommas.
    Kannst dazu zb. strtok verwenden.


    Und warum dazu PAWN Verwenden?
    Das ist in zb. C# in unter 5 Minuten erledigt ?(

    seekrass approved
    4x vom Discord geflogen


    shoxinat0r 4
    dennismitzwein 2
    Trooper[Y] 2
    maddin 1
    Unbekannter Discord Kick 2
  • Ich hatte eigentlich vor das in C zu machen weil ich das letztendlich in der Uni auch studiere, aber da wuerde es ja praktisch identisch funktionieren , gibts ja auch eine Funktion die dem PAWN sscanf gleicht
    Aber ich fine dafuer keinen genauen Ansatz wie ich das mit dem String hinkriege


    Habe es auch mal mit strreplace probiert, und die Kommas werden auch entfernt, aber auch dann gehts leider nicht



    strreplace(str, ","," ");
    printf(str);

    Einmal editiert, zuletzt von Sub Royal ()

  • Hier damit sollte es gehen


  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Proto war schneller :3 ().
  • Vielen Dank schonmal! GIbt es in C eigentlich eine Funktion die das gleiche macht wie sscanf? Weil laut dem sscanf Thread soll das PAWN sscanf und das C sscanf was unterschiedliches sein.



    Habe das mal probiert mit


    Jedoch ist leider immernoch alles 0.
    Habe noch nie mit enums gearbeitet, habe ich vielleicht was falsch gemacht? Oder kann es sein dass der String fuer sscanf zu lang ist?