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

fprintf und formatierung in Text dateien

 

Fabian1234
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 09.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.04.2011, 17:35     Titel: fprintf und formatierung in Text dateien
  Antworten mit Zitat      
hallo liebe matlabber

ich habe ein kleines problem mit der fprintf formatierung

wenn ich irgendeinen text mit fprintf in eine datei printe, z.b.

fprintf(dateiID, 'textzeile 1 \n textzeile2')

dann sehe ich ja im texteditor von matlab folgendes, wenn ich die dateiID aufmache:

textzeile1
textzeile2


wenn ich aber nun das ganze mit dem windows texteditor öffne
erhalte ich folgenden schmarn

textzeile1[]textzeile2

es scheint als ob der windows texteditor das lustige
[] zeichen nicht interpretieren kann. das ist doof, weil ich mit einem matlabskript ein anderes skript schreibe (das zeilenumbrüche enthalten muss), das ich wiederrum mit windows interpretieren möchte.

kann mir jemand helfen, dass matlab die korrekten zeilenumbrüche produziert?
danke
Private Nachricht senden Benutzer-Profile anzeigen


Fabian1234
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 09.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2011, 09:42     Titel:
  Antworten mit Zitat      
habs herausgefunden Surprised)
man muss "\r\n" schreiben
Private Nachricht senden Benutzer-Profile anzeigen
 
eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 14.04.2011, 09:53     Titel:
  Antworten mit Zitat      
siehe auch die Hilfe zu fprintf:

Zitat:
MATLAB import functions, all UNIX applications, and Microsoft Word and WordPad recognize '\n' as a newline indicator. However, if you plan to read the file with Microsoft Notepad, use '\r\n' to move to a new line when writing. For example, replace the previous call to fprintf with the following:
fprintf(fid, '%6.2f %12.8f\r\n', y);
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.04.2011, 17:26     Titel: Re: fprintf und formatierung in Text dateien
  Antworten mit Zitat      
Hallo Fabian,

Windows verwendet CHAR([13, 10]) als Zeilentrenner, während alle modernen Betriebssysteme CHAR(10) nutzen (kleiner Scherz...). Die meisten Editoren akzeptieren inzwischen alle übliche Zeilen-Trenner, nur der etwas dämliche Windows-Editor nicht. Deswegen habe ich ihn gleich in Rente geschickt und öffne Text-Datein gleich mit WordPad oder NotePad++.

Wenn nun aber doch [13,10] gebraucht wird, kann man den File-Handle mit dem 't'-Flag öffnen:
Code:
FID = fopen('File.txt', 'wt');
fprintf(FID, 'Hello world\n');   % Erzeugt CHAR([13,10]) !
fclose(FID);

FID = fopen('File.txt', 'w');   % Ohne 't'
fprintf(FID, 'Hello world\n');   % Erzeugt CHAR(10) !
fclose(FID);

Vorsicht: Das Text-Format hat noch ein paar andere lustige Tricks parat: Beim Zählen der Bytes wird CHAR([13,10]) als 1 gezählt, also liefert z.B. "fseek(FID, 0, 1); size=ftell(FID)" nicht mehr die exakte Länge des Files in Bytes. Zudem hört das Lesen des Files auf, wenn ein ^Z-Zeichen (CHAR(26)) erreicht wird und der Rest des Files wird ignoriert. Auch CHAR(8) wird als BACKSPACE interpretiert und nicht eingelesen.

Unter Linux gibt es solche Faxen zum Glück nicht. Und die Seiteneffekte des Text-Formats können so verwirrend werden, dass ich auf alle Fälle das bereits vorgeschlagene empfehlen würde:
Code:
FID = fopen('File.txt', 'w');   % Ohne 't'
fprintf(FID, 'Hello world\r\n');
% Oder:
NL = char([13, 10]);
fprintf(FID, ['Hello world', NL]);

Letzters hat den Vorteil, das man die Definition von NL an den Anfang einer Funktion setzen kann und später leicht den Zeilentrenner anpassen kann.

Gruß, Jan
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 - 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.