Octave提供扫描
, fscanf
和sscanf
用于读取格式化输入的函数。这些函数各有两种形式。一个可以用于从文件中提取数据向量,另一个更像“C”。
[val, count, errmsg] =
fscanf (fid, template, size)
¶[v1, v2, …, count, errmsg] =
fscanf (fid, template, "C")
¶在第一种形式中,阅读自fid根据样板,返回矩阵中的结果val.
可选参数大小指定要读取的数据量,可以是其中之一
Inf
尽可能多地读取,返回一个列向量。
nr
阅读至nr元素,返回一个列向量。
[nr,Inf]
尽可能多地阅读,返回一个矩阵nr排。如果读取的元素数量不是的精确倍数nr,最后一列用零填充。
[nr, nc]
阅读至nr * nc
元素,返回矩阵nr排。如果读取的元素数量不是精确的倍数nr,最后一列用零填充。
如果大小省略,值为Inf
是假定的。
如果样板仅指定字符转换。
在中返回成功读取的项目数计数.
如果出现错误,错误消息包含与系统相关的错误消息。
在第二种形式中,阅读自fid根据样板,中的每个转换值样板对应于单个标量返回值。这种形式更像“C”,也与以前版本的Octave兼容。中返回的成功转换数计数
有关模板字符串语法的完整描述,详见GNU Octave手册的格式化输入部分。
[val, count, errmsg] =
scanf (template, size)
¶[v1, v2, …, count, errmsg] =
scanf (template, "C")
¶这相当于调用fscanf
具有fid= stdin
.
当前调用无效扫描
在交互式程序中。
[val, count, errmsg, pos] =
sscanf (string, template, size)
¶[v1, v2, …, count, errmsg] =
sscanf (string, template, "C")
¶这就像fscanf
,但字符取自字符串一串而不是从流中。
到达字符串的末尾将被视为文件结束条件。除了返回的值之外fscanf
,将在中返回要读取的下一个字符的索引销售时点情报系统.
呼叫到扫描
表面上类似于对的调用输出函数
在模板字符串的控制下读取任意参数。而模板中转换规范的语法与输出函数
,模板的解释更倾向于自从格式输入和简单的模式匹配,而不是固定的字段格式。例如,大多数扫描
转换跳过输入文件中任何数量的“空白”(包括空格、制表符和换行符),并且数字输入转换没有相应输出转换那样的精度概念。通常,模板中的非空白字符应该是输入流中的自动字符。例如,请注意sscanf
当使用混合数字和字符串输出类型时,以不同的方式解析字符串和空白:
teststr=“1是一个孤独的数字”;sscanf(teststr,“%s是%s”)⇒ 1lonelynumbersscanf(teststr,“%g是%s”)⇒ 1 108 111 110 101 108 121[a,b,c]=sscanf(“1是一个孤立的数字”,“%g是一个%s%s”,“c”)⇒ a=1⇒ b=孤独⇒ c=数量
当匹配失败发生,扫描
立即返回,将第一个不匹配的字符作为下一个要从流中删除的字符,并且扫描
返回已成功转换的所有项目。
格式化的输入函数不像格式化的输出函数那样频繁使用。这在一定程度上是因为需要一些插入符号才能正确使用它们。另一个原因是很难从匹配错误中恢复。
模板字符串中允许的特定标志和修饰符及其解释都在以下章节中进行了更详细的描述。
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-1