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



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

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

中的结果

嗨2你们15

问题中提到的特定行为的原因是使用存储变量调用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则写入文本文件。

CCD_ 13对阵列CCD_,。。。,An根据列顺序的formatSpec,并将结果返回到字符串str

fprintf(fileID,formatSpec,A1,...,An)formatSpec应用于阵列A1、…的所有元素,。。。An,并将数据写入文本文件。CCD_ 22使用在对CCD_ 23的调用中指定的编码方案。

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

因此,对于在屏幕上显示文本,disp(sprintf())fprintf是相等的,但如果要将结果存储在字符串中,则必须使用sprintf,如果要将其写入文本文件,则必须采用fprintf

fprintf上的文档中,您可以看到fprintf的输出是打印的字节数。因此,这里fprintf正在打印Hi 2 all of you,而disp正在打印由fprintf返回的15。

最新更新