Hallo, ich nutze von Holger Klabunde den Code um eine SD Karte am µC zu beschreiben. Klappt auch alles super. Vielen Dank von hier aus an Holger Klabunde. Tolle Arbeit. Jetzt habe ich aber noch eine Frage. Gibt es eine Möglichkeit ein einzelnes Zeichen bzw. mehrere Zeichen (z.B. eine ganze Zeile) wieder aus der Datei auf der SD Karte zu löschen? Mit dem Befehl "Fwrite("Hallo\n",6);" kann ich 6 Bytes, also das Hallo und den Zeilenumbruch, in die Datei schreiben. Wenn meine Datei nun wächst, möchte ich den ältesten Eintrag wieder löschen (wie ein Ringbuffer). Mir fällt aber keine Möglichkeit ein, wie ich die Bytes löschen könnte. Ich kann ja erst einmal mit "Fseek(0, SEEK_SET);" zum Anfang der Datei spulen und dann??? Gibt es sowas wie "Fwrite("\del",6);"? Wahrscheinlich nicht. Hat jemand eine Idee? Gruß Antong
Wahrscheinlich ist das so nicht möglich. Eine Datei ist einfach nur ein Zeichenstrom, die Interpretation, was eine "Zeile" ist, liegt bei dir, beim Programmierer. Du wirst selbst Funktionen für eine "Ringpufferdatei" implementieren müssen. Idealerweise arbeitest du mit einer fixen record size und sparst dir so das langwierige Umkopieren von Daten (also lesen, puffern, verschieben, wieder zurückschreiben). Anton G. schrieb: > Mit dem Befehl "Fwrite("Hallo\n",6);" kann ich 6 Bytes, also das Hallo > und den Zeilenumbruch, in die Datei schreiben. Hier wird klar, dass fwrite() kein "Zeilenkonzept" kennt, sondern einfach ein char array auf den Datenträger schreibt. Du selbst hast eine übliche Konvention verwendet, nämlich dass eine Zeile aus 0..n chars besteht, die mit \n abgeschlossen wird.
Hallo Tom, das eine Zeile meine Interpretation ist, ist mir klar. Wenn ich wüsste wie ich überhaupt ein Zeichen (also ein Byte) löschen könnte, dann könnte ich mir was basteln damit z.B. immer die ersten 100Bytes gelöscht werden. Ich glaube das wird dann nicht das Problem. Das Problem was ich habe, ich habe keine Ahnung wie ich da komplett ein Byte rauslösche ohne den Rest wie du ja auch schreibst in der Datei nach "links" zu rücken, durch lesen, puffern,schreiben... Danke.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.