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

Inhalt von Datei a.txt an Datei b.txt anhängen/hinzufügen

 

Klaus1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2014, 21:12     Titel: Inhalt von Datei a.txt an Datei b.txt anhängen/hinzufügen
  Antworten mit Zitat      
Hallo und guten Abend,

ich versuche mich gerade etwas an Matlab und komme bei einem Problem absolut nicht weiter. Dazu muss ich sagen, dass meine Kenntnisse eher im unteren Bereich liegen - ich bin also gaaanz am Anfang und taste mich gerade langsam vor.

Zu meinem Problem:

Ich habe eine Datei a.txt. In dieser steht in einigen Zeilen Text.

Weiterhin habe ich eine Datei b.txt. In dieser steht ebenfalls Text, welcher komplett erhalten bleiben soll, zusätzlich soll der Text aus Datei a.txt unten angehangen werden. (alternaviv kann der Text in Datei b.txt auch komplett neu geschrieben werden, da dieser fest ist und nicht geändert werden soll, es muss nur der Text aus Datei a.txt hinzugefügt werden)

Diesen Vorgang möchte ich gern von Matlab automatisiert durchführen lassen, aber leider komme ich absolut nicht weiter Crying or Very sad

Beispiel:

Inhalt der Datei a.txt:
Code:
mir
geht
es
gut.


Inhalt der Datei b.txt:
Code:
wie
geht
es
dir?
---


Als Ergebnis soll am Ende also in der Datei b.txt folgendes stehen:
Code:
wie
geht
es
dir?
---
mir
geht
es
gut.


Es kann für diesen Vorgang gern eine zusätzliche "Hilfsdatei" im Ordner geschrieben werden, das wäre kein Problem. Schön wäre aber, wenn die dann auch automatisch wieder gelöscht werden würde. Notfalls bleibt sie halt stehen und muss manuell gelöscht werden.

Kann mir jemand helfen, dieses Problem zu bewältigen? Ich würde mich sehr über Hilfe und Lösungsansätze freuen und bedanke mich schon vielmals im Voraus,
Klaus Smile


Klaus1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2014, 16:03     Titel:
  Antworten mit Zitat      
Hallo noch einmal,

hat keiner eine Idee oder Lösung? Oder habe ich mich nicht verständlich genug ausgedrückt?! Sad

Besten Dank und viele Grüße,
Klaus Smile
 
Klaus1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2014, 13:17     Titel:
  Antworten mit Zitat      
Hallo Leute,

es kann doch nicht so schwer sein? Dateien öffnen und in Dateien schreiben ist doch möglich, wieso kann man dann nicht den Inhalt von einer Datei in eine andere Datei schreiben? Sad

Bin bei diesem Problem absolut nicht weiter und stehe nach wie vor am Anfang Sad
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 04.11.2014, 00:25     Titel:
  Antworten mit Zitat      
Hallo Klaus,

Ist auch nicht schwer. Hat nur 2 Suchen in der Matlab-Hilfe benötigt.
http://www.mathworks.de/help/matlab.....rchHighlight=text%20files
http://www.mathworks.de/help/matlab.....=write%20to%20text%20file


Code:
fid1 = fopen('a.txt', 'r');
fid2 = fopen('b.txt', 'a');

C = textscan(fid1, '%s');

fprintf(fid2, '\n')
for ii = 1:size(C{1}, 1)
    fprintf(fid2, '%s\n', C{1}{ii})
end

fclose(fid1);
fclose(fid2);


Grüße,
Seban
_________________

Richtig fragen
Debugging
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: 04.11.2014, 02:40     Titel:
  Antworten mit Zitat      
Hallo Klaus,

Noch einen Tick einfacher:

Code:
fid1 = fopen('a.txt', 'r');
fid2 = fopen('b.txt', 'a');

C = fread(fid1, Inf, '*uint8');
fseek(fid2, 0, 1);
fwrite(fid2, C, 'uint8');

fclose(fid1);
fclose(fid2);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 04.11.2014, 02:53     Titel:
  Antworten mit Zitat      
Danke Jan, wieder was neues kennen gelernt. Kannte nur fopen, fclose und ich glaub fgetl hab ich mal verwendet.

Low-Level File I/O

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Klaus1234

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.11.2014, 18:31     Titel:
  Antworten mit Zitat      
Hallo ihr beiden,

ich danke euch vielmals für eure Hilfe, es klappt wunderbar!! Habe mich jetzt für die Variante von Jan entschieden, aber der erste Vorschlag klappt auch.

@ Seban: Danke auch für den Verweis auf die Hilfe. Dort hatte ich gesucht, aber aufgrund meiner fehlenden Kenntnisse wusste ich einerseits nicht so richtig, wonach ich suchen soll und andererseits nicht, wie ich was umsetzen kann. Ich tu mich da ehrlich gesagt sehr schwer, die Programmierung ist ein soweit neues Gebiet für mich Sad

Noch eine Frage: Die Datei a.txt hat viele Zeilen untereinander (sagen wir 50 Zeilen). Gibt es hier jetzt noch eine Möglichkeit, nur jede zweite Zeile in Datei b.txt zu übernehmen, angefangen bei der ersten Zeile? Auch das bekomme ich absolut nicht hin, ich habe keine Ahnung wo ich das einbauen muss Confused

Besten Dank wieder im Voraus. So wie es jetzt ist gefällt es mir schon sehr gut und klappt prima, das mit den zweiten Zeilen wäre nur noch ein kleines i-Tüpfelchen obendrauf Smile
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 05.11.2014, 19:29     Titel:
  Antworten mit Zitat      
Gern geschehen.

Jede 2. Zeile kopieren ist auch möglich. In meinem Beispiel, musst du nur
Code:
for ii = 1:size(C{1}, 1)

durch
Code:
for ii = 1:2:size(C{1}, 1)

ersetzen.

In Jans Code musst du C entsprechend anpassen.
Code:
C = fread(fid1, Inf, '*uint8');

idx         = strfind(C', [13, 10]);    % Zeilenumbrüche finden
start_idx   = [1, idx + 2];             % Wortanfang
end_idx     = [idx + 1, size(C,1)];     % Wortende + Umbruch

start_idx   = start_idx(1:2:end);       % nur jede 2. Zeile
end_idx     = end_idx(1:2:end);

C2 = [];                                % Neues C mit jeder 2. Zeile
for ii = 1:size(start_idx, 2)
    C2 = [C2; C(start_idx(ii):end_idx(ii))];
end


Grüße,
Seban
_________________

Richtig fragen
Debugging
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.