Verfasst am: 10.03.2011, 18:29
Titel: zahl an bestimmte stelle in textdatei schreiben
Hallo,
ich hänge an einem scheinbar simplen Problem.
Ich will in einer Textdatei bestimmte Zahlen überschreiben
Nehmen wir an die Textdatei sieht folgendermaßen aus:
1
2
3
4
5
jetzt will ich die 3. zeile (also dort wo die 3 steht) mit einer 0 überschreiben, sodass die textdatei so aussieht
eigentlich ist es egal was in welcher Zeile steht. Ich will einfach nur den Inhalt EINER Zeile mit einem anderen ersetzen. In meinem Beipspiel eben in der 3. Zeile die "3" mit einer "0".
fprintf(fid, '%5.0f' , 6) ist natürlich falsch. Statt der 6 müsste dort eine 0 stehen.
Ok das funktioniert. vielen Dank.
Mein Problem ist aber noch nicht vollständig gelöst.
Der Punkt ist nämlich das ich für mein "reales" Problem nicht weiß wieviele Zeichen in der entsprechenden Zeile stehen. deshalb möchte ich einfach die komplette Zeile mit einem wert überschreiben.
Mit '%d' überschreibt er ja nur einen wert und wenn ich in die Zeile eine zweistelligen wert schreiben möchte dann schreibt er mir den in die nächste Zeile...
Mit '%d' überschreibt er ja nur einen wert und wenn ich in die Zeile eine zweistelligen wert schreiben möchte dann schreibt er mir den in die nächste Zeile...
Das kann man so nicht lösen, weil Textdatei ist nicht Excel.
Dort sind keine Zeilen oder Spalten, sondern das ist in Wirklichkein einfach eine Kette von Zeichen('1\n2\n3\n4\n5')
Kannst du denn in Array einfach, statt Einem Zwei Elemente einfügen?
Das geht nicht so einfach.
so kann man es lösen:
Code:
fid = fopen('beispiel.txt','r+');
for i=1:3 fgetl(fid) end % position merken
rep_pos = ftell(fid);
% zu nächster Zeile springen fgetl(fid) % ein Zeichen zurückgehen( NewLine Zeichen) fseek(fid, -1, 'cof') % in variable speichern
rest=fread(fid) % zu posiion kehren, wo ersetzt werden muss fseek(fid, rep_pos, 'bof') % ersetze fprintf(fid, '%d' , 200000);
% schreibe zurück, was nicht verändert sollte fwrite(fid,rest);
fclose(fid);
Noch besser wenn du komplett den Text einliest, ersetzt die Zahl, und dann zurück schreibst.
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
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.