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

Matlab disp(fprintf())打印fprintf和字符数。为什么?,matlab,printf,disp,Matlab,Printf,Disp,巧合的是,我发现,disp(fprintf())打印fprintf字符串加上它拥有的字符数。我知道,disp()是冗余的,但纯粹出于好奇,我想知道为什么它会打印字符数,因为这可能有一天会有用。 比如说 disp(fprintf('Hi %i all of you',2)) 导致 大家好15 在打开的文档中,您可以看到,fprintf的输出是打印的字节数。因此,这里,fprintf正在打印Hi 2大家,而disp正在打印fprintf返回的15。问题中提到的特定行为的原因是使用存储变量调用FIL

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

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

大家好15


在打开的文档中,您可以看到,
fprintf
的输出是打印的字节数。因此,这里,
fprintf
正在打印
Hi 2大家
,而
disp
正在打印
fprintf
返回的15。问题中提到的特定行为的原因是使用存储变量调用FILEprintf:

nbytes=fprintf(uuuuuuu)
使用前面语法中的任何输入参数返回
fprintf
写入的字节数

因此发生的情况是,
disp(fprintf(…)
首先按照
fprintf
打印文本,而不使用存储变量,但是
disp
只看到
fprintf
的存储变量,它是字符串的字节数,因此是输出

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

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

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

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

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


因此,在屏幕上显示文本时,
disp(sprintf())
fprintf
是相等的,但如果您想将结果存储在字符串中,则必须使用
sprintf
,如果您想将其写入文本文件,则必须使用
fprintf
,谢谢。但是你是怎么找到这个医生的?当我使用
doc fprintf
时,我发现这一点:@Max除了HBHB所说的之外:如果你想避免这种行为,使用
sprintf
而不是
fprintf
,这与只使用
fprintf
而不使用
disp
有什么区别吗?
sprintf
的好处在于你可以随心所欲地构造字符串它是为了;e、 我用它在我的图形上绘制“多边形的面积是%d平方米”
sprintf
也可用于生成顺序文件名,即
sprintf('SequentialFile_u%i.mat',LoopVariable)
。我将检查确切的差异,因为我很少使用
fprintf
disp(sprintf('Hi %i all of you',2))
Hi 2 all of you