disp(fprintf()) 打印 fprintf 和字符数。为什么?

disp(fprintf()) prints the fprintf and the number of characters. Why?

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

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

结果

Hi 2 all of you 15

fprintf 上的文档中,您看到 fprintf 的输出是打印的字节数。所以在这里,fprintf 正在打印 Hi 2 all of youdisp 正在打印 fprintf.

返回的 15

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

nbytes = fprintf(___) returns the number of bytes that fprintf writes, using any of the input arguments in the preceding syntaxes.

那么发生的事情是 disp(fprintf(...)) 首先打印没有存储变量的 fprintf 文本,但是 disp 只看到 fprintf 的存储变量,这是字符串的字节数,因此是输出。

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

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

文档告诉我的是 sprintf 专门用于字符串格式化,您可以使用它向图形添加文本、设置顺序文件名等,而 fprintf 写入一个文本文件。

str = sprintf(formatSpec,A1,...,An) formats the data in arrays A1,...,An according to formatSpec in column order, and returns the results to string str.

fprintf(fileID,formatSpec,A1,...,An) applies the formatSpec to all elements of arrays A1,...An in column order, and writes the data to a text file. fprintf uses the encoding scheme specified in the call to fopen.

fprintf(formatSpec,A1,...,An) formats data and displays the results on the screen.

因此 disp(sprintf())fprintf 对于在屏幕上显示文本是相等的,但是如果你想将结果存储在一个字符串中你必须使用 sprintf 并且如果你想将其写入您必须使用的文本文件 fprintf.