|
Sumli |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.10.2008, 21:03
Titel: Probleme mit fprintf
|
 |
Hi und hallo zusammen,
ich habe ein Problem mit fprintf. Ich möchte einige dDaten in eine Datei schreiben. Das funktioniert auch alles. Nur ein Zeilenumbruch mit
fprintf(file,%d\n',11); funktioniert nicht. Anstatt das die nächsten Daten in die nächste Zeile in der Textdatei geschrieben werden, wird nur ein komisches kleines Rechteck angezeigt und dahinter dann direkt die neuen Daten eingetragen. Der macht einfach diesen Zeilenumbruch nicht und fügt stattdessen dieses kleine Rechteck ein, was immer das auch für ein Zeichen ist.
\r geht auch nicht. Kann mir eventuell jemand sagen, woran das liegen könnte?
Grüße
Sumli
|
|
|
|
|
Sumli |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.10.2008, 21:13
Titel:
|
 |
Hallo,
ich habs schon *ditsch. Es muss \r\n heißen.
Grüße
Sumli
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.05.2012, 13:21
Titel: Vielen Dank
|
 |
Das war genau die Info die ich brauchte.
Viel zu oft findet man im Internet genau die Frage die man auch gerade hat.
Klickt man dann genau die Frage an gibt es mehrere Möglichkeiten:
1.) "die erste Antwort ist: warum googlest du nicht?" -Hallo? das hier ist der erste Treffer zu meiner Frage.
2.) es kommt viel dummes Blabla oder der Frage wird ausgewichen " sowas braucht doch keiner" "warum nimmst du nicht..."
3.) "Ich habe die Lösung gefunden." -Ja und wie lautet die???
Und genau deshalb sage ich danke, weil es endlich mal jemand macht und sie postet nachdem er sie gefunden hat.
DANKE ^^
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 31.05.2012, 14:11
Titel:
|
 |
Ja, das ist aber OS und Editor abhängig, also einige brauchen Rückwagen(\r) und Neue Zeile (\n), um in die neue Zeile zu springen. Andere wiederum nicht.
Deswegen kann FOPEN mit erweiterten Parametern aufgerufen werden
|
|
|
Verschoben: 31.05.2012, 14:26 Uhr von denny Von Sonstige MATLAB Fragen nach Programmierung |
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 01.06.2012, 01:49
Titel:
|
 |
|
 |
|
Hallo,
FOPEN(wt) hat tückische Nebenwirkungen. Dehalb noch mehr Details:
Dies erzeugt auch unter Windows korrekte Zeilenumbrüche, nämlich CHAR(10). Nur wenn man den Windows Editor nutzt, um das File anzuschauen, werden die Umbrüche falsch dargestellt. WordPad, NotePad++, Word, Emacs, XEmacs, Matlab's editor, vi, WordPerfect, Alpha für MacOS 9 etc. schaffen das aber. Ausser dem Windows Editor hatte auch Matlab 6.1 unter Linux Schwierigkeiten mit speziellen Zeilen-Umbrüchen.
Deshalb behaupte ich, dass nicht CHAR(10) "inkorrekt" ist, sondern der Windows Editor.
Wenn man aber unbedingt die DOS-Zeilenumbrüche benötigt, kann man dies entweder unter Windows so erreichen:
Nun wird CHAR([13, 10]) als Zeilenumbruch eingefügt, wenn das Programm unter Windows läuft. Sowie man das Programm aber unter MacOS oder Linux startet, wird CHAR(10) verwendet. Dies entspricht aber nicht der Anforderung "wenn man unbedingt die DOS-Zeilenumbrüche benötigt"!
Betriebssystem-unabhängig läßt sich das wie oben gezeigt erreichen:
Mit der letzteren Methode hat man noch die Möglichkeit an einer zenmtralen Stelle im Programm die Zeilen-Umbrüche zu kontrollieren und muss nicht jeden FPRINTF-Befehl editieren, wenn man den Stil mal ändern möchte.
Eigentlich wirkt fopen(wt) einfacher. Dies hat aber noch andere Auswirkungen, die verwirrend sein können:
1. Das Zeichen ^Z, also char(26), wird als File-Ende interpretiert. Wenn man also irgendwo ein Byte mit dem Wert 26 im File stehen hat, wird das einlesen an dieser Stelle abbrechen. Die erscheint z.B. nach "fwrite(fid, 123456774.5)", da dies als DOUBLE geschrieben eben auch ein UINT8(26) enthält. Zudem werden im Text-Mode CHAR([13,10]) als ein Buchstabe gezählt, so dass man beim Navigieren mit FSEEK zu unerwarteten Positionen gelangen kann. Ein CHAR(8) ist das Delete-Zeichen, welches das vorhergehende löscht. Und die weiteren Steuerzeichen von CHAR(0) bis CHAR(31) können ebenfalls zu unerwarteten Ergebnissen führen.
Wenn mn als eine Datei zum Lesen oder Schreiben im Text-Mode öffnet, sollte man sich unbedingt sicher sein, dass das File keine binär geschriebenen Werte enthält. Zudem erzeugt der Text-Mode unterschiedliche Ausgaben auf unterschiedlichen Betriebssystemen.
Gruß, Jan
|
|
|
|
|
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 - 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.
|
|