标准Scheme提供的唯一输出功能是显示
,用于普通输出,以及写
,用于系统格式输出。这相当有限。在另一个极端,Lisp提供了格式
函数,它有比您想象的更多的选项(在我放弃它以支持HyperSpec(超级规范),我的CLtL2打印本的书脊被折断了两处,格式
和环
). 许多语言提供某种格式的输出-有人记得吗照片在COBOL中?在今天的练习中,我们将实施打印
由C语言推广并在多种语言中使用的函数。
在打印
家庭:(冲刺
柔性制造技术 快递…)
返回根据给定规范格式化的字符串格式并包含值快递…; (打印 柔性制造技术 快递…)
显示格式类似于的字符串把格式数据写成串
至电流输出端口,以及(fprintf(打印)
港口 柔性制造技术 快递…)
显示格式类似于的字符串把格式数据写成串
到指定的港口. The柔性制造技术和港口参数总是必需的。
这个柔性制造技术参数是一个字符串,其中包含文本、转义序列和快递应格式化会话。规范由文字百分比符号组成%
,零个或多个修饰符,以及一个单字符说明符。我们将支持的单字符说明符是:
c(c)
ascii字符
d日
十进制整数
(f)
浮点数
o(o)
八进制整数
秒
一串
x个
十六进制整数
%
文字百分号
应该有这么多快递中有格式说明符柔性制造技术字符串,除了%
文字百分号说明符不使用快递会话。文字百分号之间最多可以出现四个修饰符%
开始说明符和结束说明符的单字符说明符:
-
left—调整快递会话在其领域;如果没有给出快递分裂是正当的
0
带前导零而不是空格的左图
宽度使用空格(或零)将字段填充到此宽度
.
前c小数点右边的数字,或最大字符串长度
修饰符必须按上述顺序显示。这个宽度和前c参数是无符号十进制整数。
转义序列由反斜杠引入;支持以下转义序列:
\b条
退格
\(f)
表单馈送
\n个
换行符
\第页
回车
\t吨
水平选项卡
\
ddd(ddd)具有八进制值的字符ddd(ddd),其中ddd(ddd)是介于0和7之间的1到3位数字
\
c(c)任何其他字符c(c)例如,从字面上看\\
反斜杠或\"
用于引号
根据环境的不同,换行可能(也可能不)意味着回车符或vice-versa。下一页给出了几个示例。
您的任务是编写一个函数,使用的定义为您的语言提供格式化的输出打印
或其他适合您的语言和愿望的规范。完成后,欢迎您阅读或运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。
页:1 2