WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab Integer in Textfile schreiben!

 

ifnottruethanfalse

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2013, 12:45     Titel: Matlab Integer in Textfile schreiben!
  Antworten mit Zitat      
Zuerst einmal ein freundliches Hallo an alle Beteiligten im Forum Very Happy !

Ich habe folgendes Problem:

Ich habe ein *.txt File (bzw. *.conf File, aber es ist ein Textfile) mit 5 Zeilen.
Die ersten 4 Zeilen sind Strings und die letzte Zeile ist ein Integer!

Mein Ziel ist es jetzt, diese letzte Zeile (den Integer im bereits vorhandenen *.txt File) zu verändern! Also habe ich mir alle Zeilen in eine Cell geladen, den Wert verändert und dann zurückgeschrieben.
Hier der Code:
Code:
% Read txt into cell A
fid = fopen('*.conf','r');
i = 1;
tline = fgetl(fid);
A{i} = tline;
while ischar(tline)
    i = i+1;
    tline = fgetl(fid);
    A{i} = tline;
end
fclose(fid);

% Change cell A
A{5} = 6;
A(6) = [];

% Write cell A into txt
fid2 = fopen('*.conf', 'w');
for i = 1:5
    fprintf(fid2,'%s\n', A{i});
    if (i == 5)
        fprintf(fid2, '%d', A{i});
    end    
end
fclose(fid2);


Das A(6) = [] habe ich gemacht, da immer eine zusätzliche Zeile mit -1 erzeugt wurde, die ich nicht brauchen kann!

Mit diesem Code passiert folgendes:

Die 4 Strings werden problemlos wieder in das config File geschrieben, allerdings steht in der 5 Zeile kompletter Garbage und in der 6 Zeile der Integer Wert!

Weiß jemand, was ich da falsch mache?

Ich habe schon einiges probiert, z.B. wenn ich alles als String rausschreibe sind nach den 4 Strings zwei Zeilen Garbage.
Oder wenn ich den Counter in der Schleife auf 4 setze schreibt er in die 5 Zeile einen riesigen Integer Value!

Vielen Dank im Vorhinein und schönen Tag noch!

lg ifnottruethanfalse


ifnottruethanfalse

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2013, 18:24     Titel:
  Antworten mit Zitat      
Danke, habe das Problem schon gelöst Very Happy !

Ich habe es einfach so gemacht:
Code:

A{5} = '6;'
 


Und dann alles als String in die Datei geschrieben!

lg
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2013, 21:15     Titel:
  Antworten mit Zitat      
Hallo ifnottruethanfalse,

das kann man ja so nicht stehen lassen: Du liest über das Dateiende hinaus. Das -1 das dann kommt wird noch in Dein cell-Array geschrieben, weil der Test erst nach dem Einfügen kommt.
Dann versuchst Du eine Zahl als String zu schreiben, was natürlich auch schief läuft. Ein open mit '*' wird auch nicht funktionieren.

So kann es auch aussehen:
Code:
f = fopen('data.conf');
zeilen = textscan(f,'%s'){1};
fclose(f);
zeilen{end} = sprintf('%d', -46);
f = fopen('data.conf', 'w');
fprintf(f, '%s\n',zeilen{:});
fclose(f);
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.