1
<HTML><HEAD><TITLE>Answer to Exercise 96</TITLE></HEAD>
2
<BODY BGCOLOR="#FFFFFF">
3
<TABLE><TR><TD Valign="top"><IMG SRC="../icons/exercise.gif" ALT="??"><TD bgcolor="#FAA89B"><B>ANSWER TO EXERCISE 96</B><TR><TD><TD>
6
The following implementation is limited to a format
9
characters long, and six subsequent arguments.
10
<TT>%d</TT> becomes a decimal number, <TT>%e</TT> an English one; <TT>%c</TT>
11
a character, <TT>%%</TT> a (single) percentage sign and <TT>%s</TT>
14
Array printed_text table 64;
15
Array printf_vals --> 6;
16
[ Printf format p1 p2 p3 p4 p5 p6 pc j k;
17
printf_vals-->0 = p1; printf_vals-->1 = p2; printf_vals-->2 = p3;
18
printf_vals-->3 = p4; printf_vals-->4 = p5; printf_vals-->5 = p6;
19
printed_text-->0 = 64; @output_stream 3 printed_text;
20
print (string) format; @output_stream -3;
21
j=printed_text-->0;
22
for (k=2:k<j+2:k++)
23
{ if (printed_text->k == '%')
24
{ switch(printed_text->(++k))
26
'c': print (char) printf_vals-->pc++;
27
'd': print printf_vals-->pc++;
28
'e': print (number) printf_vals-->pc++;
29
's': print (string) printf_vals-->pc++;
30
default: print "<** Unknown printf escape **>";
33
else print (char) printed_text->k;
39
<HR>Back to <A HREF="../section33.html#ex96">the exercise in section 33</A><HR>
40
<SMALL><I>Mechanically translated to HTML from third edition as revised 16 May 1997. Copyright © Graham Nelson 1993, 1994, 1995, 1996, 1997: all rights reserved.</I></SMALL></BODY></HTML>