我正在阅读并重新阅读有关matlab中函数 sprintf 的帮助,但我不了解这个函数以及它们所讨论的格式的所有内容。 / p>
我问自己功能格式背后的逻辑。
如果我运行示例
sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3)
我得到了
00546.01.03
这是逻辑,因为第一个数字(546)被写成一个整数并且有5个数字,第二个是一个字符,依此类推......但是如果现在我试试这个
sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3,4)
我得到了
00546.01.0300004
第一部分与上面相同......但它的最后一部分(00004)的格式为'%05d',这与我在函数参数中输入的第一种格式相对应。我的问题是第一种格式是否为“默认”格式?
试试这个
sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3,4,56)
得到这个
00546.01.03000048
我认为答案是没有 ......但为什么呢?而这些论点背后的逻辑是什么?
感谢您的帮助!
答案 0 :(得分:3)
您提供的sprintf
参数比格式字符串中的%
多。{1}}因此,sprintf
重新使用开头的格式字符串:
sprintf('%05d%s%02d%s%02d',546,'.',1,'.',3,4,56)
结果:
00546.01.03000048
^ starting fromat anew printing 00004 for %05d with 4
最后的'8'字符打印为'%s'
(如果你想查看它的ascii code'8'(字符)是56!)