4

巧合的是,我发现它会disp(fprintf())打印 fprintf 的字符串加上它拥有的字符数。我知道,这disp()是多余的,但只是出于纯粹的好奇,我想知道,为什么它会打印字符数,因为有一天这实际上可能会有所帮助。
例如

disp(fprintf('Hi %i all of you',2))

结果是

嗨 2 你们 15

4

2 回答 2

11

问题中提到的特定行为的原因是fprintf使用存储变量调用 FILEprintf :

nbytes = fprintf(___)fprintf使用上述语法中的任何输入参数返回写入的字节数。

所以发生的情况是,disp(fprintf(...))首先在没有存储变量的情况下打印文本fprintf,但disp只看到存储变量 of fprintf,它是字符串的字节数,因此是输出。

另外,如果要显示字符串,则需要 STRINGprintf: sprintf

disp(sprintf('Hi %i all of you',2))
Hi 2 all of you

文档向我展示的是,sprintf它专门用于字符串格式化,您可以使用它来将文本添加到图表、设置顺序文件名等,同时fprintf写入文本文件。

str = sprintf(formatSpec,A1,...,An)根据列顺序格式化数组A1,...中的数据,并将结果返回到字符串。AnformatSpecstr

fprintf(fileID,formatSpec,A1,...,An)将 应用于formatSpec数组的所有元素A1,...An按列顺序,并将数据写入文本文件。fprintf使用在对 的调用中指定的编码方案fopen

fprintf(formatSpec,A1,...,An)格式化数据并在屏幕上显示结果。

因此,为了在屏幕上显示文本disp(sprintf())fprintf相等,但是如果要将结果存储在必须使用的字符串中,sprintf并且如果要将其写入文本文件,则必须使用fprintf.

于 2015-11-04T11:02:11.037 回答
7

在 doc on 中fprintf,您会看到输出fprintf是打印的字节数。所以在这里,fprintf正在打印Hi 2 all of youdisp正在打印 15 返回的fprintf.

于 2015-11-04T10:44:23.857 回答