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