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?
#include <a_samp>
#include <sscanf2>
#include <file>
main ()
{
new str[1024];
new File:example = fopen("createobject.txt", io_read);
new i=0;
while(fread(example, str))
{
new string[512];
i++;
new modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance = 0.0;
new CreateObjectString[1024];
format(string, sizeof(string), "%s %s", string, str);
if(sscanf(string, "ifffffff", modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ, Float:DrawDistance))
format(CreateObjectString,sizeof(CreateObjectString),"<object id="%d" breakable="true" interior="0" collisions="true" alpha="255" model="%d" doublesided="false" scale="1" dimension="0" posX="%f" posY="%f" posZ="%f" rotX="%f" rotY="%f" rotZ="%f"></object>",i, modelid, Float:X, Float:Y, Float:Z, Float:rX, Float:rY, Float:rZ);
new File:handle = fopen("output.txt", io_write);
if(handle)
{
fwrite(handle,CreateObjectString);
fclose(handle);
}
else
{
print("Failed to open file");
}
}
fclose(example);
printf("%s",string);
return 0x01;
}
Alles anzeigen