2014-06-26 43 views
0

給定一個for循環,我想使用Matlab將特定的行從一個文本文件寫入另一個文本文件。我見過的解決方案提到將文本文件放入數組/矩陣中,並逐行寫入並逐行讀取(但我想讀取特定行),但他們重新格式化數據(例如將「'添加到字符串和[]到整數)。下面是代碼的一個模糊的想法:textFile & otherTextFile =我要寫入的文件,data =來自txt文件的特定行的所有內容,i =文本文件的行。使用Matlab從一個txt文件寫入特定的行到另一個使用Matlab

for i = 1:100 
    if i < 15 
     fprintf(textFile, data); 
    else 
     fprintf(otherTextFile, data); 
    end 
end 

非常感謝!

編輯:我不太清楚,但我的實際代碼需要它從幾個不同的特定部分寫出,例如。第1-15行,第60-70行復制到一個文件,其他行復制到另一個文件。使用以下接受的答案,您只需使用該確切的實現並繼續在if/elseif/else語句之間放置fprintf語句。

+0

所以,你要在一個文件中的第14行的源文本文件,並在其他文件中的下一個86? –

+0

在我的實際代碼中,我試圖將第1-15行和第66-90行復制到一個文件,將其他行復制到第二個文件。 – sc1892353

+0

用這些條件修改你的問題,我會改變我的答案。 –

回答

0

一個文本文件的字節流,這意味着有稱「行號位置ñ啓動」存儲在文本文件中沒有明確的信息。所以,只要文件打開,第一個讀取行是第一個,第二個讀取行是第二個,依此類推。

一些代碼來說明:

% Some named numbers 
N_LINES = 100 
N_SWITCH = 15 

% Open files 
fin = fopen('inputfile.txt', 'r'); 
fout1 = fopen('outfile1.txt', 'w'); 
fout2 = fopen('outfile2.txt', 'w'); 

% Split lines between the 2 files 
for i = 1:N_LINES 
     % Read input 
     data = fgets(fin); 
     if feof(fin) 
       break; 
     end; 

     % Write output 
     if i < N_SWITCH 
       fprintf(fout1, '%s', data); 
     else 
       fprintf(fout2, '%s', data); 
     end; 
end; 

% Close files 
fclose(fin); 
fclose(fout1); 
fclose(fout2); 
相關問題