巧合的是,我发现它会disp(fprintf())
打印 fprintf 的字符串加上它拥有的字符数。我知道,这disp()
是多余的,但只是出于纯粹的好奇,我想知道,为什么它会打印字符数,因为有一天这实际上可能会有所帮助。
例如
disp(fprintf('Hi %i all of you',2))
结果是
嗨 2 你们 15
问题中提到的特定行为的原因是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
,...中的数据,并将结果返回到字符串。An
formatSpec
str
fprintf(fileID,formatSpec,A1,...,An)
将 应用于formatSpec
数组的所有元素A1
,...An
按列顺序,并将数据写入文本文件。fprintf
使用在对 的调用中指定的编码方案fopen
。
fprintf(formatSpec,A1,...,An)
格式化数据并在屏幕上显示结果。
因此,为了在屏幕上显示文本disp(sprintf())
或fprintf
相等,但是如果要将结果存储在必须使用的字符串中,sprintf
并且如果要将其写入文本文件,则必须使用fprintf
.
在 doc on 中fprintf
,您会看到输出fprintf
是打印的字节数。所以在这里,fprintf
正在打印Hi 2 all of you
,disp
正在打印 15 返回的fprintf
.