Hallo
Ich habe ein Problem. Ich habe ein System geschrieben, welches die Fraktionskasse und 5 Blacklistnamen ausliesst. Unter Windows geht das fehlerfrei und die Datei wird richtig gespeichert/bespeichert. Unter Linux kommt aber immer ein zusätzlicher Zeilenumbruch hinzu, dazu später mehr. Hier ist mal der Code:
#include <a_samp>
#include <sscanf2> //Sscanf 2.0
#define FRAKTION_DATEI "Systemdaten/Fraktionen.ini"
#define MAX_FRAKTIONEN 17
forward SaveFraktionen();
enum FInfo
{
FBetrag,
Blacklist1[30],
Blacklist2[30],
Blacklist3[30],
Blacklist4[30],
Blacklist5[30]
}
new FraktionInfo[MAX_FRAKTIONEN][FInfo];
public OnFilterScriptInit()
{
//Fraktionskasse und Blacklist
new id = 0, geld, name1[30],name2[30],name3[30],name4[30],name5[30];
new File:fop = fopen(FRAKTION_DATEI,io_read);
new eingabe[256];
if(fop)
{
while(fread(fop,eingabe))
{
sscanf(eingabe,"p<,>is[30]s[30]s[30]s[30]s[30]",geld,name1,name2,name3,name4,name5);
printf(eingabe);
printf("%d",geld);
printf(name1);
printf(name2);
printf(name3);
printf(name4);
printf(name5);
FraktionInfo[id][FBetrag] = geld;
strmid(FraktionInfo[id][Blacklist1],name1,0,20,20);
strmid(FraktionInfo[id][Blacklist2],name2,0,20,20);
strmid(FraktionInfo[id][Blacklist3],name3,0,20,20);
strmid(FraktionInfo[id][Blacklist4],name4,0,20,20);
strmid(FraktionInfo[id][Blacklist5],name5,0,20,20);
id++;
}
fclose(fop);
}
return 1;
}
public OnFilterScriptExit()
{
SaveFraktionen();
return 1;
}
public SaveFraktionen()
{
new fm[256];
new File:kassenx = fopen(FRAKTION_DATEI,io_write);
for(new i = 0;i<MAX_FRAKTIONEN;i++)
{
format(fm,sizeof(fm),"%d,%s,%s,%s,%s,%s\r\n",
FraktionInfo[i][FBetrag],
FraktionInfo[i][Blacklist1],
FraktionInfo[i][Blacklist2],
FraktionInfo[i][Blacklist3],
FraktionInfo[i][Blacklist4],
FraktionInfo[i][Blacklist5]);
fwrite(kassenx,fm);
printf(fm);
}
fclose(kassenx);
}
Wie gesagt unter Windows geht es. Nun, so sieht die Datei nach einem fehlerhaften Abspeichern aus: http://pastebin.com/ekbfKqbx
Hier die Serverlog: http://pastebin.com/zf57mku7
Ich bin etwas ratlos, da ich die anderen Speichersysteme eigentlich gleich aufgebaut habe und die gehen
MfG dUDA