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

时间:2015-11-04 10:42:21

标签: matlab printf disp

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

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

结果

  

大家好,你们所有人15

2 个答案:

答案 0 :(得分:11)

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

  

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

所以会发生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)按列顺序根据A1格式化数组An,...,formatSpec中的数据,并将结果返回给字符串str

     

fprintf(fileID,formatSpec,A1,...,An)按列顺序将formatSpec应用于数组A1,... An的所有元素,并将数据写入文本文件。 fprintf使用调用fopen

中指定的编码方案      

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

要在屏幕上显示文字,disp(sprintf())fprintf相同,但如果您想将结果存储在字符串中,则必须使用sprintf并且如果要编写它在文本文件中,您必须使用fprintf

答案 1 :(得分:7)

fprintf上的文档中,您会看到<android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="@dimen/custom_tab_layout_height" app:tabMode="scrollable" app:tabGravity="fill"/> 的输出是打印的字节数。因此,fprintf正在打印fprintf,而Hi 2 all of you正在打印disp返回的15。