Frage zu "fwrite"

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
  • Hallo. Ich wollte ein command machen, wo ein Wert in einem Account geändert wird in dieser schreibweise unten.
    Doch wenn ich das mit dem code ausführe wird der Rest in der Datei gelöscht und man sieht nur "Bank=50000".
    Ich möchte aber gerne dass Bank=bla mit Bank=50000 ersetzt wird und der andere Inhalt erhalten bleibt.


    new File:account = fopen(acc,io_write);
    fwrite(account,"Bank=50000\n");
    fclose(account);


    Vielen Dank im Vorraus.


    EDIT: Hier ist noch ein screen:

    Einmal editiert, zuletzt von purplehaze. ()

  • dann hast du den wert bank aber 2 mal drin, ist nicht die schönste lösung aber normalerweise wird der zuletztstehende wert genommen und beim nächsten speichern ist die datei wieder normal.


    Korrekt wäre es mit einer Temporeren Datei.

  • Hmm bei io_append passiert nichts. :|


    Zitat

    dann hast du den wert bank aber 2 mal drin, ist nicht die schönste lösung aber normalerweise wird der zuletztstehende wert genommen und beim nächsten speichern ist die datei wieder normal.


    Korrekt wäre es mit einer Temporeren Datei.

    Eigentlich ist es eine Userfile die editiert werden soll.

  • new File:user= fopen(acc,io_read); //Userdatei wird im Lese-Modus geöffnet
    new buff[128];
    new File:temp = fopen("acc_temp.txt",io_write);
    while(fread(user,buff)) //Geht die Datei Zeile für Zeile durch
    {
    if(strfind(buff,"Bank=") != -1)continue; //Falls die Zeile gefunden wurde, die überschrieben werden soll wird sie nicht gespeichert
    fwrite(temp,buff); //alle anderen werden gespeichert
    }
    fclose(user);
    user = fopen(acc,io_write); //Diesmal wird die datei im Schreib-Modus geöffnet
    while(fread(temp,buff))
    {
    fwrite(user,buff); //Alle Zeilen aus der Temp-Datei werden in die Userdatei geschrieben
    }
    fwrite(user,"Bank=5000"); // -> Bank wird mit dem neuen Wert gespeichert
    fclose(user);
    fclose(temp);

    so oder so ähnlich müsste es funktionieren

  • Jetzt sieht die Userfile so aus:

  • das könnte gehen, ungetestet:
    new File: file = fopen(acc,io_read);
    new File: file2 = fopen("acc_temp.txt",io_write);
    if (file)
    {
    new string[80];
    new string2[1020];
    new filestring[90];
    while (fread(file, string))
    {
    if(strfind(string,"Bank=") != -1)
    {
    format(string2,sizeof(string2),"Bank=%d\n",deinNeuerWert);
    fwrite(file,string2);
    } else {
    fwrite(file,string);
    }
    }
    fclose(file);
    fclose(file2);
    }
    new File: file = fopen(acc,io_write);
    new File: file2 = fopen("acc_temp.txt",io_read);
    if (file)
    {
    new string[80];
    while (fread(file2, string))
    {
    if(strlen(string) > 1)
    {
    fwrite(file, string);
    }
    }
    fclose(file);
    fclose(file2);
    fremove("acc_temp.txt");
    }