本节介绍如何调用 printf 及相关函数。
以下函数可用于格式化输出。它们以同名的 C 语言函数为模型,但对格式模板的解释方式有所不同,以提高打印向量和矩阵值的性能。
实现说明:为了与 MATLAB 兼容,模板字符串中的转义序列(例如 "\n" => 换行符)即使在使用单引号定义模板字符串时也会被展开。
(template, …) ¶numbytes = printf (…) ¶在模板字符串 template 的控制下将可选参数打印到流 stdout,并返回打印的字符数。
有关模板字符串语法的完整说明,请参阅 GNU Octave 手册的"格式化输出"部分。
可选输出参数 numbytes 返回打印的字节数。
实现说明:为了与 MATLAB 兼容,模板字符串中的转义序列(例如 "\n" => 换行符)即使在使用单引号定义模板字符串时也会被展开。
(fid, template, …) ¶(template, …) ¶numbytes = fprintf (…) ¶此函数与 printf 等效,区别在于输出被写入文件描述符 fid 而不是 stdout。
如果省略 fid,则输出被写入 stdout,使得该函数完全等同于 printf。
可选输出参数 numbytes 返回写入文件的字节数。
实现说明:为了与 MATLAB 兼容,模板字符串中的转义序列(例如 "\n" => 换行符)即使在使用单引号定义模板字符串时也会被展开。
str = sprintf (template, …) ¶此函数类似于 printf,但输出以字符串形式返回。
与要求您提供合适大小的字符串作为参数的 C 库函数不同,Octave 的 sprintf 函数返回自动调整大小以容纳所有转换后项的字符串。
实现说明:为了与 MATLAB 兼容,模板字符串中的转义序列(例如 "\n" => 换行符)即使在使用单引号定义模板字符串时也会被展开。
printf 函数可用于打印任意数量的参数。调用时提供的模板字符串参数不仅提供了有关附加参数数量的信息,还提供了有关它们的类型以及打印时应使用何种样式的信息。
模板字符串中的普通字符会按原样写入输出流,而由模板中的 % 字符引入的 转换规范 则会导致后续参数被格式化并写入输出流。例如,
pct = 37;
filename = "foo.txt";
printf ("Processed %d%% of '%s'.\nPlease be patient.\n",
pct, filename);
产生如下输出:
Processed 37% of 'foo.txt'. Please be patient.
此示例展示了使用 %d 转换指定标量参数应以十进制表示法打印,使用 %s 转换指定打印字符串参数,以及使用 %% 转换打印一个字面 % 字符。
还有一些转换用于将整数参数打印为无符号值,分别以八进制(%o)、十进制(%u)或十六进制(%x)基数表示;或打印为字符值(%c)。
浮点数可以使用 %f 转换以普通定点表示法打印,或使用 %e 转换以指数表示法打印。%g 转换根据具体数值的大小,选择使用 %e 或 %f 格式中更为合适的一种。
您可以通过在 % 和指示应用哪种转换的字符之间编写 修饰符 来更精确地控制格式。这些修饰符会略微改变转换的常规行为。例如,大多数转换规范允许您指定最小字段宽度以及一个标志,指示您希望结果在字段内左对齐还是右对齐。
允许的具体标志和修饰符及其解释因特定转换而异。以下各节将对它们进行更详细的描述。
版权所有 © 2024-2026 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-4