2016-05-06 18 views
3

Dies ist eine sehr grundlegende Frage, aber da ich neu bei Matlab bin, habe ich Mühe, einen guten Weg zu finden, dies zu tun. Ich möchte nur einige verkettete Zeichenfolgen auf dem Bildschirm und in einer Textdatei ausgeben. Matlab "isst" das \ n !!Drucken Sie verkettete Zeichenfolge auf Bildschirm und Textdatei mit Matlab

str1 = sprintf('Line 1\n'); 
str2 = sprintf('Line 2\n'); 
finalStr = strcat(str1,str2); 
% Print on screen 
fprintf('%s',finalStr); 
% Result: Line 1Line 2. What happened to the \n ?? !!!! 

% Print on file 
[curPath,name,ext] = fileparts(mfilename('fullpath')); 
infoPath = fullfile(curPath,'MyFile.txt'); 
fid = fopen(infoPath,'w'); % Write only, overwrite if exists 
fprintf(fid,finalStr); 
fclose(fid); 

Ich muss auch finalStr in eine Textdatei speichern. Was fehlt mir hier?

+0

versuchen% \ n vor dem 1 – 16per9

+0

auch diese http://www.mathworks.com/matlabcentral/answers/45241-sprintf-format-specifiers-won-t-print-newline – 16per9

+0

Aus [der Dokumentation für 'strcat'] (http://www.mathworks.com/help/matlab/ref/strcat.html):' Für Zeichenarray-Eingaben entfernt strcat nachfolgende ASCII-Leerzeichen: Leerzeichen, Tabulator, vertikale Tabulatoren, Zeilenumbrüche, Wagenrücklauf und Seitenvorschub. "Sie haben einen abschließenden Zeilenvorschub. Verwenden Sie stattdessen ['horzcat'] (http://www.mathworks.com/help/matlab/ref/horzcat.html). – excaza

Antwort

2

Die Funktion strcat ignoriert Leerzeichen. Um diesen Vorgang auszuführen, verwenden:

finalStr = [str1, str2]; 
fprintf('%s',finalStr); 

Ergebnis:

Line 1 
Line 2 

Edit: Um den Text auf einer Textdatei in einer "Notepad" Art und Weise zu schreiben:

% Notepad needs \r also. 
newline = sprintf('\n'); 
newlineNotepad = sprintf('\r\n'); 
strB = strrep(strA, newline, newlineNotepad); 
+0

Es wird jetzt korrekt auf dem Bildschirm gedruckt, aber nicht in der Textdatei. – Pedro77

+0

Der Grund ist, dass ich den Namen finalstr und nicht finalStr verwendet habe. Ich habe meine Antwort entsprechend aktualisiert, es sollte jetzt funktionieren. – drorco

+0

Ich singe die richtigen Namen. In der Textdatei berücksichtigt der resultierende Text nicht \ n. – Pedro77

0

Sie könnten auch die Verwendung von strcat vollständig entfernen:

fprintf('%s%s',str1, str2); 
Verwandte Themen