例如,如果我有文件A.dat
和B.dat
以及
A.dat
1 2 3
4 5 6
7 8 9
,文件B.dat
最初为空。
我如何(使用Matlab函数)打开文件B.dat
打印A.dat
内容并打印其他条目,如
10 11 12
13 14 15
我试过
fileA=fopen('A.dat','r')
fileB=fopen('B.dat','w');
fprintf(fileB,fileA);
或
fprintf(fileB,fscanf(fileA));
或
fprintf(fileB,fscanf(fileA,'%s'));
但没有效果。
答案 0 :(得分:2)
您似乎对使用的功能感到困惑。 fprintf
和fscanf
可能不是您想要的(但可能有用)。
尝试改为使用fread
和fwrite
:
dataA = fread(fileA)
fwrite(fileB, dataA)
在http://www.mathworks.se/help/techdoc/ref/f16-5702.html#f16-14516
上查看文档中的文件操作答案 1 :(得分:1)
您应该可以使用fgets
。 fopen
提供的文件ID不是文件中的信息,因此您的第一个示例将无效。
假设您的文件是文本(不是二进制文件),那么类似下面的内容应该可以复制文件
fileA = fopen('A.dat','r');
fileB = fopen('B.dat', 'w');
while (line = fgets(fileA)) ~= -1
fprintf(fileB, line);
end
fclose(fileA);
fclose(fileB);
fgets
从文本文件中为您提供整行(包括换行符)。
如果您的文件是二进制文件,则以下内容将起作用
fileA = fopen('A.dat', 'r');
fileB = fopen('B.dat', 'w');
AData = fread(fileA);
fwrite(fileB, AData);
注意:不幸的是我在这台电脑上没有matlab,所以我无法测试这些例子。
有关不同文件函数的更多信息,matlab已经看到: http://www.mathworks.com/help/techdoc/ref/f16-5702.html#f16-14516