文档

fscanf

从文本文件读取数据

语法

A = fscanf(fileID,formatSpec)
A = fscanf(fileID,formatSpec,sizeA)
[A,count] = fscanf(___

描述

例子

A = fscanf(文件标识formatSpec将数据从打开的文本文件读入列向量一个属性指定的格式解释文件中的值formatSpec.的fscanf函数在整个文件中重新应用该格式,并将文件指针定位在文件结束标记处。如果fscanf不能匹配formatSpec对于数据,它只读取匹配的部分并停止处理。

文本文件由文件标识符表示,文件标识.使用打开外部文件若要打开该文件,请指定字符编码,并获取文件标识价值。读取完成后,通过调用关闭文件文件关闭(文件标识)

例子

A = fscanf(文件标识formatSpecsizeA将文件数据读入数组,一个,有尺寸,sizeA,并将文件指针定位在最后一次读取值之后。fscanf填充一个按列排序。sizeA必须是正整数还是有形式(mn),在那里n都是正整数。

例子

一个= fscanf(___附加返回字段的数量fscanf读到一个.对于数值型数据,这是读取值的数量。您可以将此语法与前面语法的任何输入参数一起使用。

例子

全部折叠

创建一个包含浮点数的示例文本文件。

X = 100*rand(8,1);fileID = fopen(“nums1.txt”' w ');流(文件标识,“% 4.4 f \ n”, x);文件关闭(文件标识);

查看文件内容。

类型nums1.txt
81.4724 90.5792 12.6987 91.3376 63.2359 9.7540 27.8498 54.6882

打开文件读取,获取文件标识符,文件标识

fileID = fopen(“nums1.txt”“r”);

定义要读取的数据格式。使用' % f '指定浮点数。

formatSpec =' % f ';

读取文件数据,填充输出数组,一个,按列顺序排列。fscanf重新应用格式,formatSpec,贯穿整个文件。

A = fscanf(fileID,formatSpec)
一个=81.4724 90.5792 12.6987 91.3376 63.2359 9.7540 27.8498 54.6882

一个包含来自文件的数据的列向量。

关闭文件。

文件关闭(文件标识);

创建一个包含整数和浮点数的示例文本文件。

X = 1:1:5;Y = [x;rand(1,5)];fileID = fopen(“nums2.txt”' w ');流(文件标识,“% d % 4.4 f \ n”, y);文件关闭(文件标识);

查看文件内容。

类型nums2.txt
1 0.8147 2 0.9058 3 0.1270 4 0.9134 5 0.6324

打开文件读取,获取文件标识符,文件标识

fileID = fopen(“nums2.txt”“r”);

定义要读取的数据的格式和输出数组的形状。

formatSpec =“% d % f”;sizeA = [2 Inf];

读取文件数据,填充输出数组,一个,按列顺序排列。fscanf重复使用格式,formatSpec,贯穿整个文件。

A = fscanf(fileID,formatSpec,sizeA)
一个=1.0000 2.0000 3.0000 4.0000 5.0000 0.8147 0.9058 0.1270 0.9134 0.6324
文件关闭(文件标识);

转置数组,这样一个匹配文件中数据的方向。

A = A'
一个=1.0000 0.8147 2.0000 0.9058 3.0000 0.1270 4.0000 0.9134 5.0000 0.6324

跳过示例文件中的特定字符,只返回数字数据。

创建一个包含温度值的示例文本文件。

str =78°c 72°c 64°c 66°c 49°c;fileID = fopen(“temperature.dat”' w ');流(文件标识,' % s 'str);文件关闭(文件标识);

阅读文件中的数字,跳过文本,°C。还返回值的数目fscanf读取。扩展的ASCII码176表示度数符号。

fileID = fopen(“temperature.dat”“r”);度= char(176);[A,count] = fscanf(fileID, [' % d '“C”)文件关闭(文件标识);
A = 78 72 64 66 49 count = 5

一个包含文件中的数值的向量。表明fscanf读出5个值。

输入参数

全部折叠

打开的文本文件的文件标识符,以整数形式指定。在读取文件之前使用fscanf,你必须使用打开外部文件命令,打开该文件并获取文件标识

数据类型:

文件中数据字段的格式,指定为一个或多个转换说明符的字符向量或字符串标量。当fscanf读取文件时,尝试将数据与指定的格式相匹配formatSpec

数值字段

该表列出了数字输入的可用转换说明符。fscanf将值转换为十进制(以10为基数)表示。

数字字段类型 转换说明符 细节

整数,签署了

% d

以10为底的

%我

文件中的值决定基数:

  • 默认底数为10。

  • 如果首位数为0 x0 x,则该值为十六进制(以16为基数)。

  • 如果起始数字为0,则值为八进制(以8为底)。

% ld%李

64位值,以10、8或16为基数

整数,无符号

% u

以10为底的

%啊

8进制(八进制)

% x

基数16(十六进制)

陆%%瞧% lx

64位值,以10、8或16为基数

浮点数

% f

浮点字段可以包含以下任意值(不区分大小写):,或

% e

% g

字符字段

该表列出了字符输入的可用转换说明符。

字符字段类型 转换说明符 描述

字符向量或字符串标量

% s

读课文直到fscanf遇到空白。

% c

读取任何单个字符,包括空白。
若要一次读取多个字符,请指定字段宽度。

模式匹配

%[…]

只能读取方括号中直到第一个不匹配字符或空白的字符。

例子:%(亩)读取“夏天”作为“夏”

如果formatSpec则包含数字和字符说明符的组合fscanf将每个字符转换为其等效数字。即使格式显式地跳过所有数值(例如,formatSpec% * d %年代”).

可选的运营商

  • 要忽略的字段和字符

    fscanf按顺序读取文件中的所有数值和字符,除非您告诉它忽略特定字段或字段的一部分。若要跳过字段,请插入星号(*)在百分号(% gydF4y2Ba).例如,要跳过整数,请指定% * d

  • 字段宽度

    若要指定一次读取的数字或文本字符的最大数量,请在百分比字符后插入一个数字。例如,% 10 c一次最多读取10个字符,包括空白。% 4 f一次最多读取4位数字,包括小数点。

  • 忽略文字

    fscanf属性中附加的指定文本formatSpec转换说明符。

    例子:水平% u读取“使”作为1

    例子:% uStep读取的2个步骤作为2

输出数组的尺寸,一个,指定为整数或两元行向量。

的形式sizeA输入 描述
读到文件的末尾。
对于数值数据,输出一个,是列向量。
对于文本数据,一个是一个字符向量。
n 最多阅读n数字值或字符字段。
对于数值数据,输出一个,是列向量。
对于文本数据,一个,是一个字符向量。
m, n 最多阅读*n数字值或字符字段。n可以,但不能。输出,一个,是——- - - - - -n,按列顺序填写。

输出参数

全部折叠

文件数据,作为列向量、矩阵、字符向量或字符数组返回。的类别和大小一个取决于formatSpec输入:

  • 如果formatSpec那么,只包含数字说明符一个是数字。如果您指定sizeA参数,然后一个是指定大小的矩阵。否则,一个是一个列向量。如果输入的值小于sizeA值,然后fscanf一个0。

    • 如果formatSpec则仅包含64位有符号整数说明符一个是一流的int64

    • 如果formatSpec则仅包含64位无符号整数说明符一个是一流的uint64

    • 否则,一个是一流的

  • 如果formatSpec只包含字符或文本说明符(% c% s),然后一个是字符数组。如果你指定sizeA那么,输入包含的字符更少fscanf一个char (0)

  • 如果formatSpec则包含数字和字符说明符的组合一个是数字吗,fscanf将每个文本字符转换为其等效数字。这甚至发生在formatSpec显式跳过所有数字字段(例如,formatSpec% * d %年代”).

  • 如果MATLAB®无法将文件数据匹配到formatSpec,然后一个可以是数字或字符数组。这类人一个这取决于fscanf在停止处理之前读取。

读取的字符数,作为标量值返回。

提示

  • 读取函数的格式说明符sscanffscanf不同于书写功能的格式sprintf.读取函数不支持精度字段。金宝appwidth字段指定写入的最小值,读取的最大值。

算法

MATLAB使用与文件相关的编码方案读取字符。方法打开文件时指定编码打开外部文件函数。

R2006a之前介绍

这个话题有用吗?