在使用格式化I/O函数时,理解格式字符串与变量类型的匹配至关重要。格式字符串中的第一个转换指定符与fprintf函数输出参数列表中的第一个值相结合,依此类推。每一个格式转换指定符的类型必须与输出数据类型相同。举个例子,指示符%d与变量a联合,%f与变量b结合,%s与变量c相结合。注意,指定符类型必须与数据类型相匹配。a = 10; b = pi; c = 'Hello'; fprintf('Output: %d %f %s ', a, b, c);

更有趣的是,在函数fprintf运行完所有的变量之前,如果扫描已经到达格式字符串的结尾,程序会再次从头开始扫描格式字符串。语句a = [10 20 30 40]; fprintf('Output = %4d ',a);将会产生输出:


Output = 10 

Output = 20 

Output = 30 

Output = 40

这让人不禁感叹编程的奇妙之处:函数在打印完a(2)后,到达格式字符串的结尾,它将会回到字符串的开始,继续打印a(3)a(4)

更复杂的情况是,如果函数fprintf在到达格式字符结束之前运行完所有的变量,格式字符串的应用将停止。例如语句a = 10; b = 15; c = 20; fprintf('Output = %4d Output = %4.1f ', a, b, c);将产生输出:


Output = 10 

Output = 15.0 

Output = 20 

Output =

格式字符串的应用停止在%4.1f,这是它第一次与格式转换指示符不匹配。从另一方面来说,语句voltage = 20; fprintf('Voltage = %6.2f kv. ', voltage);将产生输出:


Voltage = 20.00 kv.

因为它与格式转换字符串匹配,所以格式的应用停止在格式字符串的结尾。这个机制让人忍不住惊叹编程的逻辑之美。

如果你对这些函数的更多用法感兴趣,不妨看看这些资源:Golang Printf Sprintf Fprintf格式化详解fprintf类函数PHP fprintf函数用法讲解python格式化函数。这些链接不仅能让你深入了解不同编程语言中的格式化函数,还能为你提供更多实际的编程示例和操作指南。

产生并打印数据表是说明函数fprintf使用的好方法。下面的脚本产生1到10中的所有整数的平方根、平方和立方,并在一个表中显示数据,带有合适的表头。


% Script file: table.m

% 

% Purpose:

% To create a table of square roots, squares, and

% cubes.

% 

% Record of revisions:

% Date Programmer Description of change

% ======= ===

% 12/20/98 S. J. Chapman Original code

% 

% Define variables:

% cube -- Cubes

% ii -- Index variable

% square -- Squares

% square_roots -- Square roots