Problem mit fopen, ftell, fwrite und fclose

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit fopen, ftell, fwrite und fclose

    Also... ich habe folgendes geschrieben (stark gekürzt):

    Code:
    if ($verbindung = fopen ($datei, "a")) {
             echo ("Verbindung zu <b>$datei</b> hergestellt! <br>");
        } else {
             echo ("Verbindung zu <b>$datei</b> konnte <b>NICHT</b> hergestellt werden! <br>");
        }
    
        echo (ftell($verbindung));
    
        if (!(ftell($verbindung))) {
            $text = "BAUMHAUS";
    
            if (fputs($verbindung, $text)) {
                echo ("Erfolgreich geschrieben... <br>");
            } else {
                echo ("Konnte nicht schreiben..."); exit();
            }
        }
    
        fclose($verbindung)
    Es wird eine Verbindung zu einer Datei ($datei) erstellt... Wenn diese leer ist (= Pointer auf 0), wird $text reingeschrieben. Dann wird die Verbindung unterbrochen!

    Nach dem 1. bzw. beim 2. Aufruf dieses Scripts müsste die Datei $datei also den Inhalt BAUMHAUS haben. Demnach dürfte der pointer (ftell) NICHT wie beim ersten Aufruf des Scripts auf 0 stehen, denn durch das "a" bei fopen sollte der Pointer auf das Ende der Datei zeigen, was ja nicht 0 ist... ok?

    Tja jedenfalls bleibt dieser sh*t pointer immer auf 0 stehen, egal wie oft ich das Script ausführe , demnach wird auch immer mehr BAUMHAUS reingeschreiben... HILFEEEE!

  • #2
    mach doch:
    if(!file_exists($datei)){
    $text ="BAUMHAUS";
    }
    bevor Du die Datei mit fopen öffnest
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Nicht gerade ne elegante Methode... ich möchte eigentlich eher wissen, warum das nicht geht...

      Kommentar


      • #4
        Nun der dateizeiger steht wirklich erst auf null beim Dateiöffnen.
        erst nachdem Du geschrieben hast geht er ans ende...
        und dann bekommst Du mit ftell() auch das richtige ergebnis...
        komisch, ok, aber Du musst nach dem fopen("","a")
        tatsächlich erstmal ans Ende gehen....
        das kannste mit fseek() machen, oder Du prüfst ob es die Datei gibt, ich weiss jetzt nicht was daran so unelegant ist... eine if abfrage...
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Also er ist wirklich trotz des "a" am Anfang ?!
          Und wie funktioniert "fseek" ?

          Kommentar

          Lädt...
          X