给定for循环,我想使用Matlab将特定行从一个文本文件写入另一个文本文件。我见过的解决方案提到将文本文件放入数组/矩阵并逐行写入并逐行读取(而我想读取特定的行)但是他们重新格式化数据(例如,将''添加到字符串和[] to ints)。以下是对代码的模糊概念:textFile& otherTextFile =我要写入的文件,data =来自txt文件特定行的所有内容,i =文本文件的行。
for i = 1:100
if i < 15
fprintf(textFile, data);
else
fprintf(otherTextFile, data);
end
end
提前非常感谢!
编辑:我不太清楚,但我的实际代码需要从几个不同的特定部分编写,例如。第1-15行,第60-70行复制到一个文件,其他行复制到另一个文件。使用下面接受的答案,您只需使用该确切的实现并继续将fprintf语句放在if / elseif / else语句之间。
答案 0 :(得分:0)
文本文件是一个字节流,这意味着文本文件中没有存储明确的信息说&#34;行号 n 从开始< / strong>位置&#34;。因此,一旦文件打开,第一个读取行是第一个,第二个读取行是第二个,依此类推。
一些代码来说明:
% 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);