我有一个包含需要提取并插入新文本文件的数据的大文本文件。我可能需要将这些数据存储在一个单元/矩阵数组中?
但就目前而言,问题是我正在尝试测试较小的数据集,以检查下面的代码是否有效。
我有一个代码,在其中打开一个文本文件,扫描它并复制数据并将其保存在另一个名为" output.txt"的文本文件中。
问题:似乎没有正确保存文件。它只是在文本文件中显示一个空数组,例如" [] "
。原始文本文件只包含字符串。
%opens the text file and checks it line by line.
fid1 = fopen('sample.txt');
tline = fgetl(fid1);
while ischar(tline)
disp(tline);
tline = fgetl(fid1);
end
fclose(fid1);
% save the sample.txt file to a new text fie
fid = fopen('output.txt', 'w');
fprintf(fid, '%s %s\n', fid1);
fclose(fid);
% view the contents of the file
type exp.txt
我从哪里开始?
答案 0 :(得分:5)
通过一次将所有内容加载到内存来读取输入文件并不是一个好习惯。这样,您能够读取的文件大小受到计算机上的内存量(或操作系统愿意分配给单个进程的内存量)的限制。
相反,使用fopen及其相关函数,以逐行或逐字符形式读取文件。
例如,
fid1 = fopen('sample.txt', 'r');
fid = fopen('output.txt', 'w');
tline = fgetl(fid1);
while ischar(tline)
fprintf(fid, '%s\n', tline);
tline = fgetl(fid1);
end
fclose(fid1);
fclose(fid);
type output.txt
当然,如果你事先知道输入文件永远不会很大,你可以通过textread或一些等效函数一次性读取它。
答案 1 :(得分:2)
尝试使用textread
,它从文本文件中读取数据并将其存储为矩阵或Cell数组。在一天结束时,我假设您希望将数据存储在变量中以根据需要对其进行操作。完成操作后,使用fopen
打开文件并使用fprintf
以您想要的格式写入数据。