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

\ in fprinft und Cellarray

 

Divid

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2009, 15:02     Titel: \ in fprinft und Cellarray
  Antworten mit Zitat      
Hallo,

ich habe eine txt-Datei, die mit fopen in ein Cellarray zeilenweise eingelesen wird. In dem Cellarray werden dann verschiedene Werte ausgelesen bzw. manipuliert. Anschließend wird das Cellarray wieder zeilenweise über fprintf in eine txt-Datei geschrieben. Diese drei Vorgänge erfolgen als Teil einer Schleife. Bisher funktionierte das einwandfrei, doch die schrittweise Erweiterung des Programm machte es jetzt notwendig, dass in der ursprünglichen txt-Datei ein Programmpfad (D:\Programme\usw.) enthalten ist.

Nun kam der Fehler "undefined escape sequence" auf Grund der '\' in dem Programmpfad. Um diese Zeile aber trotzdem korrekt mit fprintf in ein txt schreiben zu können, muss nun ja jedes \ mit einem weiteren \ versehen werden. Ich habe dafür etwas geschrieben:

Code:

l_1 = length ('\')
for k=1:lines    %für jede Zeile des Cells tline
   sline = tline{k,1};    %Zeilwert als String speichern
   pos = strfind(sline, '\');   Finden der Stelle mit \
   if isempty(pos) ~=1
      teil_1 = sline(1:pos-1);
      teil_2 = sline('\\');
      teil_3 = sline(pos+l_1:end);
      nline = [teil_1 teil_2 teil_3]; % neue Zeile aus Einzelteilen
      tline{k,1} = nline; %Neuer Zellwert im Cellarray
   end
end
 


Das funktioniert soweit ganz gut, wenn nur ein \ in der txt-Zeile enthalten ist. Bei einem längeren Pfad sind aber mehrere \ enthalten und es wird immer nur der erste erkannt. Wie muss ich meinen Code anpassen, dass jeder \ durch \\ ersetzt wird?


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 12.10.2009, 15:22     Titel:
  Antworten mit Zitat      
Hallo,

wie wäre es mit
Code:
sline = strrep(sline, '\', '\\');

Um ganz vorsichtig zu sein, könntest Du noch den Fall abfangen, dass irgendwo schon ein \\ stand:
Code:
sline = strrep(sline, '\\\\', '\\');
 


Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Divid

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2009, 16:00     Titel:
  Antworten mit Zitat      
Ok, es gibt einen Befehl dafür, sehr schön, danke!

Jetzt besteht nur noch das Problem, dass in dem txt an der letzten Stelle des Pfades ein zusätzliches "Rechteck" (ich kenne das Zeichen nicht, sieht eben wie ein Rechteck im Hochformat aus) angefügt wird. Wie kann man das umgehen?
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.10.2009, 11:06     Titel:
  Antworten mit Zitat      
Hallo,

das könnte der Zeilenumbruch sein. Versuche mal mit einem anderen Editor (z.B. dem MATLAB Editor) die Datei zu öffnen, ist das Zeichen immer nocht da?
Zweitens: wie öffnest Du die Datei zum schreiben, nimm als Format am Besten 'wt' anstatt nur 'w'.

Titus
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.