一、fscanf( )语法
A = fscanf(fileID, format)
A = fscanf(fileID, format, sizeA) [A, count] = fscanf(...)
二、fscanf( )描述
A = fscanf(fileID, format)
从一个文本文件中数据列顺序读取并转换成数组。要转换,fscanf使用的格式和编码方案与该文件相关联。要设置的编码方案,使用fopen。该fscanf函数重新应用在整个文件的格式,并在最终的文件标记位置的文件指针。如果fscanf无法比拟的格式的数据,内容是:只有那部分分为A,停止处理 。
A = fscanf(fileID, format, sizeA)
读入一个sizeA元素和最后一个元素的位置后,文件指针读取。 sizeA可以是整数,也可以有表格[m,n]。
[A, count] = fscanf(...)
fscanf成功读取,返回数字的元素。
三、输入参数
fileID
FOPEN获得的整数文件标识符。 format
字符串括在单引号中,描述每个元素的类型(场)。包括一个或更多下列说明符。
字段类型 说明符 详情
Integer,.......... .%d................. .. 10进制
signed........... ...%i, %ld or %li ..确定进制的值。默认为进制为10。如果最初的数字是
为0x或0X,这是进制为16。如果最初的数字是0,这
是进制8。64位值,进制为10,8,或16
Integer, %u 10进制
unsigned
%o 8进制
%x 16进制
%lu, %lo, %lx 64位值,进制为10,8,或16
浮点数 %f 浮点字段可以包含以下内容(大小写不敏感的话):
Inf文件,- Inf文件,南,或南。
%e 浮点字段可以包含以下内容(大小写不敏感的话):
Inf文件,- Inf文件,南,或南。
%g 浮点字段可以包含以下内容(大小写不敏感的话):
Inf文件,- Inf文件,南,或南。 字串
%s 阅读系列的字符,直到找到空白。
%c 阅读任何单个字符,包括空格。 (要读多个字符,
指定字段的长度。)
%[...] 只读括号中的字符,直到第一个非匹配字符或空格。
《Simulink与信号处理》
可选:
要跳过字段,插入一个星号(*后百分号(%))。例如,要跳过整数,指定%*D
要指定一个字段的最大宽度,插入一个数字。例如,%10C条读取时间刚好10个字符,包括空格。
若要跳过特定格式的字符集,插入文字字符。例如,要读只能从'圆周率= 3.14159浮点数字',指定一个'格式PI=%f的。 sizeA
A:在输出数组指定维度下列形式之一: inf 阅读该文件的末尾。 (默认) n 阅读最多n个元素。 [m,n] 阅读最多M* n个元素的列顺序。 n可以是inf,但M却不能。 当格式包括了%s,A可以包含超过n列。 N是指元素,而不是字符。
四、输出参数 A
A为一个数组。如果格式包括:
只有数字说明符,一个是数字。如果格式包括只有64位有符号整数说明符,一类是int64。同样,如果格式包括只有64位无符号整数说明符,是一类uint64。否则,一类是double。如果sizeA是inf或n,则A是一个列向量。如果输入包含比sizeA元素少,与MATLAB的垫一个零。
只有字符或字符串说明符(%C或%s)中,A是一个字符数组。如果sizeA是inf或N,A是一个行向量。如果输入包含比sizeA字符较少,MATLAB的垫带有字符(0)。
综合运用数字和字符说明符,一个是数字,类 double。 MATLAB的每个字符转换为等价的数值。即使发生这种转换的格式明确跳过所有的数字值(例如,一个'格式%* d%s'的)。
如果不能匹配MATLAB的输入格式,并包含数字的格式和字符说明符,A可以是数字或字符。一个关于MATLAB的价值取决于前处理停止读取类。 count
fscanf读入A 元素的数目
五、应用举例
阅读文件的内容。 fscanf重用整个文件的格式,所以你不需要控制回路: % Create a file with an exponential table x = 0:.1:1; y = [x; exp(x)];
fid = fopen('exp.txt', 'w');
fprintf(fid, '%6.2f %12.8f\n', y); fclose(fid);
% Read the data, filling A in column order % First line of the file: % 0.00 1.00000000
fid = fopen('exp.txt');
A = fscanf(fid, '%g %g', [2 inf]); fclose(fid);
% Transpose so that A matches % the orientation of the file A = A';
跳过特定字符的文件,并只返回数字值: % Create a file with temperatures tempstr = '78°F 72°F 64°F 66°F 49°F';
参考文献:
http://wenku.baidu.com/link?url=aexRXQ822IapdnQ2j3zaqfQj611d_XXihumaYx0qCOiEsGUkl0t7p5zrXSHuuQIniz-ooWjTfmmTCnMfo24a04LNq81E_QNwHkf0CUl7O7Ofid = fopen('temperature.dat', 'w+');
fprintf(fid, '%s', tempstr); book.iLoveMatlab.cn
% Return to the beginning of the file frewind(fid);
% Read the numbers in the file, skipping the units % num_temps is a numeric column vector
degrees = char(176);
num_temps = fscanf(fid, ['%d' degrees 'F']);
fclose(fid);