|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.09.2007, 12:34
Titel: TXT Dateien editieren
|
|
Hallo,
wäre sehr froh wenn mir jemand bei diesem Problem helfen könnte. Es soll eine TXT Datei editiert werden. D.h. an einer bestimmten Stelle ein Wert durch einen neuen durch Überschreiben ersetzt werden. Dies erfolgt durch den Befehl fprintf. Falls der neue Wert jedoch mehr Stellen hat als der alte wird automatisch die nächste Zeile überschrieben so wie unten zu sehen
123456 %alter Wert
nächste Zeile
12345678 %neuer Wert
chste Zeile
Gibt es denn eine Möglichkeit wie man das verhindern könnte?
Danke schon mal für die Hilfe!
|
|
|
|
|
Michaela |
Forum-Century
|
|
Beiträge: 239
|
|
|
|
Anmeldedatum: 12.07.07
|
|
|
|
Wohnort: ---
|
|
|
|
Version: bis 2007b
|
|
|
|
|
|
Verfasst am: 24.09.2007, 22:34
Titel:
|
|
Hmm, vielleicht könntest Du ein Beispiel für die Verwendung von fprintf angeben, dann wäre die Frage klarer. Es sieht so aus, als ob \n am Stringende überschrieben würde. Evtl. würde es helfen ein \n einzufügen falls mehr Ziffern ersetzt werden als vorher vorhanden waren? Komisch ist aber, das dann der Zeilenumbruch trotzdem stattfindet....
_________________
---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.09.2007, 07:58
Titel:
|
|
Die TXT Datei sieht zu Beginn zum Beispiel so aus:
12345
Nächste Zeile
Nächste Zeile2
Dann öffne ich die Datei im Lese und Schreibmodus und überschreibe die Zeile mit dem neuen Wert:
fid = fopen(openfile,'rt+');
fprintf(fid,'%s\n','12345678')
Damit sieht die Datei so aus:
12345678
e Zeile
Neue Zeile2
Ich bräuchte aber:
12345678
Neue Zeile
Neue Zeile2
Es scheint, dass einfach vorhandene Zeichen einfach überschrieben werden und sobald keine mehr in der Zelie vorhanden sind einfach die aus der nächsten überschrieben werden. Gibt es die Möglichkeit neue Zeichen in eine Zeile einzufügen ohne alte zu überschreiben?
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 25.09.2007, 09:17
Titel:
|
|
|
|
|
Hallo,
so wie ich das sehe, kann man mit fprintf immer nur ein Zeichen durch ein neues ersetzen, wobei ein Zeilenumbruch als ein Zeichen interpretiert wird. Auf http://www.mathworks.com/support/tech-notes/1600/1602.html wird in Section 4 das umgekehrte Problem thematisiert: Wenn die neue Zahl weniger Zeichen hat, bleiben die Reste der alten Zahl stehen - auch nicht schön. Das Problem ist also ein prinzipielles und bekannt. Es wird aber auch eine Umgehung angeboten, die ich hier mal auf deine Frage angewandt wiedergebe:
Man liest mit fgetl die erste Zeile ein, speichert dann den Rest der Datei in einer Variablen, springt mit fseek an den Anfang der Datei, schreibt dann die neue Zahl und zuletzt den Rest der Datei wieder zurück. Ist zwar eher umständlich, funktioniert aber.
Steht die zu ersetzende Zahl nicht in der ersten Zeile, geht man so vor wie bei Example 3a in Section 4 auf der oben genannten Seite. Damit kann man in eine beliebige Zeile wandern und ab da dann so vorgehen wie hier. Ist das praktikabel?
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.09.2007, 15:04
Titel:
|
|
Super, genau das habe ich gesucht. Danke!
Gruß, Pablo
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 26.09.2007, 13:49
Titel:
|
|
File komplet ins MATLAB in ein String einlesen. Entsprechende Stellen nachbessern/austauschen/ergänzen und anschliessend den vorhandenen File mit aktualisiertem String überschreiben...
MfG
P.S. theoretisch kann man einen Reifen direkt am Rad austauschen, aber einfacher ist es zuerst das Rad abzumontieren ...
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|