r 读出
w 写入(文件若不存在,自动创建)
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。
文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参数“permission”中加入“t”文件将,如“rt”,“wt+”
1 写入文件
数据的格式化输出:fprintf(fid,format,variables)
fid为文件句柄,若缺省,则输出到屏幕
format用来指定数据输出时采用的格式
%d 整数
%e实数:科学计算法形式
%f实数:小数形式
%g由系统自动选取上述两种格式之一
%s输出字符串
一般来说MATLAB的数据为十进制矩阵(这里举例为一维矩阵),保存为16进制时如下代码所示,保存为10进制时则改
fprintf(fp,'%d,',soc_data(i));
soc_data = [12 13 14 15 20 22 23 25];
%soc_data1 = dec2hex(soc_data);%转换为16进制后将变成矩阵
%soc_data1 = dec2bin(soc_data);%转换为2进制后将变成矩阵
fp=fopen('E:\data.txt','wt');
for i=1:8
fprintf(fp,'%x,',soc_data(i));%打开文件后就相当于C语言的输出函数,每次输入一个数,8bit长度
fprintf(fp,'\n');%换行
end
fclose(fp);
a=0;
可设定写入长度,高位补0
soc_data = [12 13 14 15 20 22 23 25];
soc_data1 = dec2bin(soc_data);%转为2进制时变成矩阵
fp=fopen('E:\data.txt','wt');
for i=1:8
fprintf(fp,'%08s,',soc_data1(i,:));%打开文件后就相当于C语言的输出函数,每次输入一个数,8bit长度
fprintf(fp,'\n');%换行
end
fclose(fp);
a=0;
00001100
00001101
00001110
00001111
00010100
00010110
00010111
00011001
fid=fopen('E:\data.txt');
data=fscanf(fid,'%s');
fclose(fid);
读取结果为:1x64;'0000110000001101000011100000111100010100000101100001011100011001'
或者
indata=textread('E:\data.txt','%s');
b=bin2dec(indata);
此时读取结果为 8x1:
00001100
00001101
00001110
00001111
00010100
00010110
00010111
00011001
TXT数据:
c
d
e
f
14
16
17
19
或者:c d e f 14 16 17 19
[1,8]表示读取的数目
fid=fopen('E:\data.txt');
data=fscanf(fid,'%x',[1,8]);
fclose(fid);
TXT:12 13 14 15 20 22 23 25
或者
12
13
14
15
20
22
23
25
fid=fopen('E:\data.txt');
data=fscanf(fid,'%d',[1,8]);
fclose(fid);