Newsgroups: fj.archives.answers,fj.lang.c
Path: galaxy.trc.rwcp.or.jp!coconuts.jaist!wnoc-tyo-news!newsgate1.web.ad.jp!newsbase.nisiq.net!news1.nisiq.net!newsfeed.btnis.ad.jp!nspixp!spinnews!spin-hsd0-tky!yhqfm!xeroc!leia!133.140.40.2!kitano
From: kitano@crd.yokogawa.co.jp (Kinichi - Kinchan - Kitano)
Subject: comp.lang.c Answers to Frequently Asked Questions (FAQ List) in Japanese[3/4]
Sender: news@leia.pa.yokogawa.co.jp (Leia news server)
Message-ID: <KITANO.97Jul15023051@crd.yokogawa.co.jp>
Supersedes: <KITANO.96Feb26184429@SDA.crd.Yokogawa.CO.JP>
Date: Mon, 14 Jul 1997 17:30:51 GMT
Reply-To: kitano@crd.yokogawa.co.jp
Organization: Yokogawa Electric Corporation, Tokyo, Japan.
Followup-To: fj.lang.c
Lines: 1728
Xref: galaxy.trc.rwcp.or.jp fj.archives.answers:1285 fj.lang.c:1207
X-originally-archived-at: http://galaxy.rwcp.or.jp/text/cgi-bin/newsarticle2?ng=fj.lang.c&nb=1207&hd=a
X-reformat-date: Mon, 18 Oct 2004 15:18:22 +0900
X-reformat-comment: Tabs were expanded into 4 column tabstops by the Galaxy's archiver. See http://katsu.watanabe.name/ancientfj/galaxy-format.html for more info.

Archive-name: c-faq-j/part3
Last-modified: 14 July. 1997


========================= C FAQ $BF|K\8lLu(B[(B3(J/4](B (J=========================(B

11$B>O(B ANSI/ISO$B5,3J(BC

11.1:$B!V(BANSI C $B5,3J!W$H$O2?$r0UL#$9$k$N$+!#(B

A:1983$BG/$K!"%"%a%j%+9qFbI8=`5,3J6(2q(B(ANSI)$B$O(BC$B8@8l$NI8=`2=$rL\;X(B
$B$70Q0w2q(BX3J11$B$rH/B-$5$;$?!#2?EY$+$N9-HO0O$K$o$?$k8x3+%l%S%e!<(B
$B$r4^$`D9$$:$Fq$J2aDx$N8e$K!"0Q0w2q$N:n6H$O!"%"%a%j%+9qFbI8=`5,(B
$B3J(BX3.159$B$H$7$F(B1989$BG/(B12$B7n(B14$BF|$KHc=Z$5$l!"(B1990$BG/$N=U$K=PHG$5$l$?!#(B
ANSI C$B$NBgItJ,$O@$$NCf$N47=,$r5,3J2=$7$?$b$N$G!"$=$N$[$+$O(BC++
$B$+$i$N(B($B0lHVM-L>$J$N$O4X?t%W%m%H%?%$%W$G$"$k(B)$B%"%$%G%"$NGR<Z$H!"(B
$BB?9q8lJ8;zNs$X$NBP1~(B($B9sI>$5$l$F$$$k;0O"J8;z(B(trigraph)$B$r4^$`(B)$B$G(B
$B$"$k!#(BANSI C$B5,3J$O!"(BC$B$N<B9T;~$N%i%$%V%i%j$K$D$$$F$b5,Dj$7$F(B
$B$$$k!#(B

$B$b$C$H:G6a$NOC$G$O!"5,3J$O9q:]I8=`(BISO/IEC 9899:1990$B$H$7$F:NBr(B
$B$5$l$?(B($BLuCm(B:$BF|K\$G$O(BISO 9899$B$rK]Lu$7$?$b$N$,(BJIS X 3010:1993$B$H(B
$B$7$FH/9T$5$l$F$$$k(B)$B!#$=$7$F$3$N(BISO$B$N5,3J$,$=$l$h$jA0$KB8:_$7$?(B
X3.159$B$K<h$C$F$+$o$C$?!#$3$l$O%"%a%j%+9g=09q$G$bF1$8$G$"$k!#>O(B
$BHV9f$N?6$jJ}$,0c$C$F$$$k(B($B<jC;$K8@$($P(BISO$B$N(B5$B>O$+$i(B7$B>O$,$@$$$?$$(B
$B5l(BANSI$B$N(B2$B>O$+$i(B4$B>O$KBP1~$9$k(B)$B!#(BISO$B$N5,3J$G$"$k$+$i!"5;=Q@58mI=(B
(Technical Corrigenda)$B$d5,HOJd0d(B(Normative Addenda)$B$rH/9T$7$F(B
$B@d$($:2~D{$7$J$1$l$P$J$i$J$$!#(B

1994$BG/$K!"5;=Q@58mI=(B1$B$,H/9T$5$l$*$h$=(B40$B%v=j$G5,3J$,=$@5$5$l$?(B
($BLuCm(B: $BF|K\$G$O!X(BX3101:96 $B%W%m%0%i%_%s%08@8l(BC($BDIJd(B1)$B!Y$H$7$F(B
1996$BG/$KH/9T$5$l$?(B)$B!#$?$$$F$$$O:3:Y$J=$@5$b$7$/$O$o$+$j$K$/$$(B
$B$H$3$m$N=q$-D>$7$G$"$k!#$b$C$H:G6a$NOC$G$O!"5,HOJd0d(B1$B$G$*$h$=(B
50$B%Z!<%8$N?7$7$$Bj:`$,DI2C$5$l$?!#$[$H$s$I$O9q:]2=$N$?$a$N?7$7(B
$B$$%i%$%V%i%j4X?t$K$D$$$F$G$"$k!#9q:]2=$N$?$a$N?7$7$$%i%$%V%i%j(B
$B4X?t$N5;=Q@58mI=$N:n@.$,?J9TCf$G!"(B2$BHVL\$N@58mI=$O(B1995$BG/8eH>$K(B
$BH/9T$,M=Dj$5$l$F$$$k!#$5$i$K!"(BANSI$B$b(BISO$B$b<+J,$?$A$N5,3J$NDj4|(B
$BE*$J8+D>$7$rL?$8$F$$$k!#$3$N<jB3$-$O(B1995$BG/$K;O$^$j!"$^$C$?$/2~(B
$BDj$5$l$?5,3J$r;:$_=P$9$@$m$&(B("C9X"$B$H0&>N$,$D$1$i$l$F$$$k!#$3$l(B
$B$O(B1999$BG/$^$G$K$O40@.$9$k$@$m$&$H9M$($i$l$F$$$k$H$3$m$+$i$D$1$i(B
$B$l$F$$$k(B)$B!#(B

$B=PHGJ*$H$7$F$N5,3J$O!"!V(BRationale($BO@M}E*:,5r(B)$B!W$r4^$s$G$$$k!#(B
Rationale$B$O!"5,3J$N7hDj$K$^$D$o$kB?$/$N;vJA$K$D$$$F@bL@$7!"$3(B
$B$N(BFAQ$B$G<h$j>e$2$F$$$k$$$/$D$+$N$3$H$,$i$r4^$`5,3J$N?tB?$/$NHy(B
$BL/$JE@$K$D$$$F@bL@$7$F$$$k(B(Rationale$B$=$N$b$N$O(BANSI Standard
X3.159-1989ANSI Standard X3.159-1989$B$N0lIt$G$O$J$$!#$?$@$7;qNA(B
$B$H$7$F4^$^$l$F$$$k!#(BISO$B5,3J$K$O4^$^$l$F$$$J$$(B)$B!#(B

11.2:$B$I$3$+$i5,3J$r<j$KF~$l$k$3$H$,$G$-$k$+(B

A:$B%"%a%j%+9g=09q9qFb$G$O!"0J2<$N$H$3$m$+$i<j$KF~$l$k$3$H$,$G$-$k!#(B

American National Standards Institute
11 W. 42nd St., 13th floor
New York, NY  10036  USA
(+1) 212 642 4900

$B$"$k$$$O(B

Global Engineering Documents
2805 McGaw Avenue
Irvine, CA  92714  USA
(+1) 714 261 1455
(800) 854 7179  ($B9g=#9qFb$*$h$S%+%J%@(B)

$B$=$NB>$N9q$G$O!"9q$N5,3J$r<h$j;E@Z$kCDBN$+%8%e%M!<%V$N(BISO$B$KLd(B
$B$$9g$o$;$F$_$k$3$H!#(B($BLuCm(B: $BF|K\$G$OF|K\5,3J6(2q$,H/Gd$7$F$$$k!#(B
JIS$B$O(BTEL 03-3583-8002$B!"(BISO$B$O(BTEL 03-3583-8003 $B$h$jF~<j2DG=$G$"(B
$B$k!#(B)

ISO Sales
Case Postale 56
CH-1211 Geneve 20
Switzerland

(URL http://www.iso.ch$B$d%K%e!<%9%0%k!<%W(Bcomp.std.internat$B$N(BFAQ
$B$G$"$k(BStandards.Faq$B$b;2>H$N$3$H(B).

$B8=;~E@$G$O2A3J$O!"(BANSI$B$+$i9XF~$9$k$H$-$O(B$130$B$G!"(BGlobal$B$+$i9XF~(B
$B$9$k>l9g$O(B$400.50$B$G$"$k!#(BRationale$B$r4^$`%*%j%8%J%k$N(BX3.159$B$b!"(B
ANSI$B$+$i$O(B$205.00$B$G!"(BGlobal$B$+$i$O(B$162.50$B$GF~<j$9$k$3$H$,$G$-$k!#(B
ANSI$B$O!"$=$N1?1D;q6b$r5,3J$N0u:~J*$NHNGd$+$iF@$F$$$k!#$h$C$F5,(B
$B3J$NEE;RE*$J%3%T!<$OF~<jIT2D$G$"$k!#(B

$B9g=09q9qFb$G$O85$N(BANSI X3.159(Rationale$B$r4^$`(B)$B$r!V(BFIPS PUB 160$B!W(B
$B$H$$$&L>A0$G0J2<$+$iF~<j2DG=$+$b$7$l$J$$!#(B

National Technical Information Service (NTIS)
U.S. Department of Commerce
Springfield, VA  22161
703 487 4650

$B8m2r$r>7$/$h$&$JBj$N!XCm<aIU$-(BANSI C$B5,3J(B(Annotated ANSI C
Standard)$B!Y$H$$$&K\$,(BHerbert Schildt$B$NCm<aIU$-$G(B
Osborne/McGraw-Hill$B$+$i(BISBN 0-07-881952-0$B$H$7$F=PHG$5$l$F$$$k!#(B
$B$3$l$O(BISO 9899$B$N!"?t%Z!<%8$r=|$$$F$[$H$s$IA4J8$r4^$s$G$$$k!#9g(B
$B=09q9qFb$G$O(B$40$BDxEY$G<j$KF~$k!#$3$NK\$H8x<0$N5,3J=q$NCMCJ$N:9(B
$B$OCm<a$N2ACM$rH?1G$7$F$$$k$H9M$($i$l$F$$$k!#$3$NK\$O8m$j$dH4$1(B
$B$,B?$/$FJD8}$9$k!#5,3J$=$N$b$N$N$[$&$b2?%Z!<%8$+7gMn$7$F$$$k!#(B
$B%M%C%H>e$GB?$/$N?M$,Cp<aIt$O$^$k$C$-$jL5;k$9$k$3$H$r4+$a$F$$$k!#(B
Clive Feather$B$K$h$kCp<a$NHcI>(B("$BCp<aIU$-$NCp<a(B")$B$O(B
http://www.lysator.liu.se/c/schildt.html$B$+$i<j$K$$$l$k$3$H$,$G(B
$B$-$k!#(B

Rationale$B$N%F%-%9%H(B($B5,3JA4BN$G$O$J$$(B)$B$O(Bftp.uu.net$B$N%G%#%l%/%H(B
$B%j(Bdoc/standards/ansi/X3.159-1989$B$+$i(Banonymous ftp($B<ALd(B18.16$B;2(B
$B>H(B)$B2DG=$G$"$k!#(Bhttp://www.lysator.liu.se/c/rat/title.html$B$+$i(B
$B$bF~<j$9$k$3$H$,$G$-$k!#(BRationale$B$O(BSilicon Press$B$+$i=PHG$b$5$l(B
$B$F$$$k!#(BISBN$B$O(B0-929306-07-4$B$G$"$k!#(B

See also question 11.2a below.

11.2a:$B5,3J$N2~D{$N?J$_6q9g$K4X$9$k>pJs$O$I$3$+$iF@$i$l$k$+!#(B

A: http://www.lysator.liu.se/c/index.html$B$d(Bhttp://www.dmk.com/$B$+(B
$B$i>/$7$OF@$i$l$k!#(B

11.3:$B;d$,;H$C$F$$$k(BANSI C$B%3%s%Q%$%i$K0J2<$N$h$&$J%3!<%I$rEO$9$H!"%G!<(B
$B%?$N7?$,0c$&$HJ86g$rIU$1$k!#$J$<$+!#(B

extern int func(float);

int func(x)
float x;
{$B!D(B

A:$B?7$7$$=q$-J}$G$"$k%W%m%H%?%$%W@k8@$N(Bextern int func(float);$B$H!"(B
$B8E$$=q$-J}$NDj5A$N(Bint func(x) float x;$B$r:.$<$F;H$C$F$$$k$+$i$G(B
$B$"$k!#N>J}$N=q$-J}$r:.$<$F;H$C$F$b$?$$$F$$$N>l9g$OLdBj$J$$$,(B
($B<ALd(B11.4$B;2>H(B)$B!"$3$N>l9g$OLdBj$,$"$k!#(B

$B5lMh$N(BC$B$O(B(ANSI C$B$b%W%m%H%?%$%W$,$J$$$H$-$d!"0z?t$,2DJQ8D?t$N$H(B
$B$-$O$=$&$@$,!#<ALd(B15.2$B;2>H(B)$B4X?t$KEO$9$H$-$K!<It$N0z?t$r(B"$B9-$2$k(B
"$B!#(Bfloat$B$O(Bdouble$B$K3J>e$2$5$l!"(Bchar$B$d(Bshort int$B$O(Bint$B$K3J>e$2$5$l(B
$B$k!#(B($B8E$$=q$-J}$N4X?tDj5A$G$O!"CM$O8F$P$l$?B&$N4X?t$GJQ?t$,69(B
$B$$7?$G@k8@$5$l$F$$$k$H$-$K$O<+F0E*$KBP1~$9$k(B"$B69$$(B"$B7?$K5UJQ49$5(B
$B$l$?!#(B)

$B?7$7$$=q$-J}$G$"$k%W%m%H%?%$%W@k8@$r4X?tDj5A$NCf$G<sHx0l4S$7$F(B
$B;H$&$+!"(B

int func(float x) { $B!D(B }

$B?7$7$$=q$-J}$N4X?t%W%m%H%?%$%W@k8@$r!"8E$$=q$-J}$NDj5A$K9g$&$h(B
$B$&$KJQ99$9$k$3$H$GLdBj$O2r7h$9$k!#(B

extern int func(double);

$B$3$N>l9g%Q%i%a!<%?$N%"%I%l%9$r;H$&5$$,$J$$8B$j!"8E$$=q$-J}$N(B
$B@k8@$G$O(Bdouble$B$r;H$C$?$[$&$,$o$+$j$d$9$$!#(B

"$B69$$(B"(char$B!"(Bshort int$B!"(Bfloat)$B7?$O!"4X?t0z?t$dLa$jCM$H$7$F$OHr(B
$B$1$?$[$&$,0BA4$G$"$m$&!#(B

$B<ALd(B1.25$B$b;2>H$N$3$H!#(B

References: K&R1 Sec. A7.1 p. 186; K&R2 Sec. A7.3.2 p. 202; ANSI
Sec. 3.3.2.2, Sec. 3.5.4.3; ISO Sec. 6.3.2.2, Sec. 6.5.4.3;
Rationale Sec. 3.3.2.2, Sec. 3.5.4.3; H&S Sec. 9.2 pp. 265-7,
Sec. 9.4 pp. 272-3.

11.4:$B8E$$=q$-J}$H?7$7$$=q$-J}$N4X?t$N9=J8$r:.$<$F;H$C$F$b$$$$$N$+!#(B

A:$BCm0U$5$($9$l$P(B($B<ALd(B11.3$B$rFC$K;2>H$N$3$H(B)$B:.:_$9$k$3$H$O!"$^$C$?(B
$B$/9gK!$G$"$k!#$7$+$78E$$=q$-J}$N9=J8$O;~BeCY$l$H9M$($i$l$F$*$j!"(B
$B$=$N8x<0%5%]!<%H$O$"$kF|;_$^$C$F$7$^$&$+$b$7$l$J$$!#(B

References: ANSI Sec. 3.7.1, Sec. 3.9.5; ISO Sec. 6.7.1,
Sec. 6.9.5; H&S Sec. 9.2.2 pp. 265-7, Sec. 9.2.5 pp. 269-70.

11.5:$B$J$<@k8@(B

extern f(struct x {int s;} *p);

$B$G0UL#ITL@$N7Y9p%a%C%;!<%8!V9=B$BN(Bx$B$O%W%m%H%?%$%W$N%9%3!<%WFb(B
$B$GF3F~$5$l$?!W$,=P$k$N$+!#(B

A: C$B$N%V%m%C%/$N%9%3!<%W$N0lHL5,B'$N5$$^$0$l$K$h$j!"%W%m%H%?%$%W(B
$BFb$G=i$a$F@k8@$5$l$?9=B$BN$O(B($BL>A0$,=P$F$/$k$@$1$G$b(B)$B!"F1$8%=!<(B
$B%9%U%!%$%kFb$G@k8@$5$l$F$$$kB>$N9=B$BN$H8_49@-$r;}$D$3$H$,$G$-(B
$B$J$$(B($BL>A0$O%W%m%H%?%$%W$N=*$o$j$G%9%3!<%W$+$i=P$F$7$^$&(B)$B!#(B

$B$3$NLdBj$r2r7h$9$k$K$O!"%W%m%H%?%$%W$NA0$KL50UL#$K$_$($k@k8@(B

struct x;

$B$rIU$1$k!#$3$l$K$h$j%U%!%$%kA4BN$K$o$?$k%9%3!<%W$G!"9=B$BN(Bx$B$N(B
($BIT40A4$J(B) $BDj5A$rCV$/>l=j$,3NJ]$5$l$k!#$3$l$G8e$KB3$/(Bstruct x$B$r(B
$B;H$C$?@k8@$O>/$J$/$H$bF1$8(Bstruct x$B$r;X$7$F$$$k$3$H$,3N$+$K$J$k!#(B

References: ANSI Sec. 3.1.2.1, Sec. 3.1.2.6, Sec. 3.5.2.3; ISO
Sec. 6.1.2.1, Sec. 6.1.2.6, Sec. 6.5.2.3.

11.8:$B$J$<(Bconst$B$NCM$r!"=i4|2=;XDj;R(B(initializer)$B$dG[Ns$NBg$-$5$K;H$((B
$B$J$$$+M}2r$G$-$J$$!#(B

const int n = 5;
int a[n];

A:const$B=$>~;R$O<B:]$O(B"$BFI$_9~$_@lMQ(B"$B$r0UL#$9$k!#(Bconst$B$H=$>~$5$l$?(B
$B%*%V%8%'%/%H$O(B($BIaDL$O(B)$BBeF~IT2DG=$J<B9T;~$N%*%V%8%'%/%H$G$"$k!#(B
$B$7$?$,$C$F(Bconst$B$H=$>~$5$l$?%*%V%8%'%/%H$O!"Dj?t<0$H$$$&MQ8l$N(B
$BA4BN$N0UL#$r9M$($k$HDj?t<0$H$O8F$Y$J$$(B(C$B$O$3$NLL$G$O(BC++$B$H0c$&(B)$B!#(B
$B%3%s%Q%$%k;~$N??$NDj?t$,I,MW$J$i!"%W%j%W%m%;%C%5$N(B#define$B$r;H(B
$B$&(B($BNs5sBN$,;H$($k>lLL$b$"$k(B)$B!#(B

References: ANSI Sec. 3.4; ISO Sec. 6.4; H&S Secs. 7.11.2,7.11.3
pp. 226-7.

11.9:char const *p$B$H(Bchar * const p$B$N0c$$$O!#(B

A:char const *p$B$OJ8;zDj?t$X$N%]%$%s%?$G(B($BJ8;z$rJQ99$9$k$3$H(B
$B$O$G$-$J$$(B)$B!"(Bchar * const p$B$OJ8;z(B($B$NJQ?t(B)$B$X$N%]%$%s%?Dj(B
$B?t(B($B%]%$%s%?$rJQ99$9$k$3$H$O$G$-$J$$(B)$B$G$"$k!#(B

$B0lHVFbB&$+$i(B"$B$R$C$/$jJV$7$F(B"$BFI$`!#<ALd(B1.21$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 3.5.4.1 examples; ISO Sec. 6.5.4.1;
Rationale Sec. 3.5.4.1; H&S Sec. 4.4.4 p. 81.


11.10:$B$J$<(Bconst char **$B$r0z?t$H$7$F<h$k$H4X?t%W%m%H%?%$%W$K=q$+$l$?(B
$B4X?t$K!"(Bchar **$B$rEO$9$3$H$,$G$-$J$$$N$+!#(B

A:($B$I$s$J7?(BT$B$KBP$7$F$b(B)const T$B$X$N%]%$%s%?$rA[Dj$7$F$$$k$H$3$m$K(B
T$B$X$N%]%$%s%?$r;H$&$3$H$O2DG=$G$"$k!#$7$+$7$3$N(B($B$3$l0J30$OIT2D(B
$BG=$G$"$k(B)$B5,B'!"$D$^$jBe$o$j$K;H$&$3$H$N$G$-$k%]%$%s%?7?$K>/$7(B
$B$NIT0lCW$r5v$7$F$$$k5,B'$O!":F5"E*$KE,MQ$5$l$k$o$1$G$O$J$/!"C1(B
$B$K0lHV>e$N3,AX$GE,MQ$5$l$k$@$1$G$"$k!#(B

$B%]%$%s%?$,0lCJ$G$"$k>l9g$r=|$$$F!"7?$,0lCW$7$J$$%]%$%s%?$rBeF~(B
$B$9$k(B($B$^$?$O0z?t$H$7$FEO$9(B)$B$H$-$O!"L@<(E*$K%-%c%9%H(B($B$3$N>l9g$O(B
const char **)$B$7$J$1$l$P$J$i$J$$!#(B

References: ANSI Sec. 3.1.2.6, Sec. 3.3.16.1, Sec. 3.5.3; ISO
Sec. 6.1.2.6, Sec. 6.3.16.1, Sec. 6.5.3; H&S Sec. 7.9.1 pp. 221-
2.

11.12:main()$B$r(Bvoid$B$H$7$F@k8@$7$F!V(Bmain$B$NLa$jCM$,$J$$!W$H$$$&L\>c$j$J(B
$B%a%C%;!<%8$r>C$9$3$H$,$G$-$k$+!#(B

A:$B$G$-$J$$!#(Bmain()$B$O(Bint$B$rLa$jCM$H$7!"(B($BE,@Z$J7?$N(B)0$B8D$+(B2$B8D$N0z?t(B
$B$r;}$D$HDj5A$7$J$1$l$P$J$i$J$$!#(Bexit()$B$r8F$s$G$b$^$@7Y9p$,=P$k(B
$B$N$G$"$l$P!">iD9$G$"$k$,(Breturn$BJ8$rA^F~$9$k$7$+$J$$(B($B$"$k$$$O;H(B
$B$($k4D6-$K$$$k$N$G$"$l$P!V$3$3$K$OFO$+$J$$$h(B:NOTREACHED$B!WL?Na(B
$B$r;H$&(B)$B!#(B

$B4X?t$r(Bvoid$B$H@k8@$9$k$3$H$O7Y9p$,=P$J$/$J$C$?$j7Y9p$N=g$,JQ$o$C(B
$B$?$j$9$k$@$1$G$O$J$$!#4X?t$N0[$J$k8F$S=P$7(B/$BLa$j$N;EAH$_$r;H$&(B
$B$3$H$K$J$k2DG=@-$,$"$k!#$3$l$,8F$S<j(B(main()$B$N>l9g!"(BC$B$N<B9T;~$N(B
$B%9%?!<%H%"%C%W%3!<%I(B)$B$,4|BT$7$F$$$k$b$N$H0c$&$b$N$K$J$k2DG=@-(B
$B$,$"$k!#(B

($B$3$N(Bmain$B$K4X$9$k5DO@$O(B"$B%[%9%HIU$-(B(hosted)"$B$J4D6-$K$@$1E,MQ2D(B
$BG=$G$"$k!#(B"$B%U%j!<%9%?%s%G%#%s%0(B($B0l?MN)$A(B:freestanding)"$B$J=hM}(B
$B7O$K$O$I$l$bE,MQ$5$l$J$$!#$3$&$$$&=hM}7O$K$O$=$b$=$b(Bmain()$B$,$J(B
$B$$$+$b$7$l$J$$!#$7$+$7$J$,$i(B"$B%U%j!<%9%?%s%G%#%s%0(B"$B$J=hM}7O$O$^(B
$B$l$G!"$=$&$7$?=hM}7O$r;H$C$F$$$k$J$i!";H$C$F$$$k?M$O$*$=$i$/>5(B
$BCN$7$F$$$k$@$m$&!#$3$N0c$$$K$D$$$FJ9$$$?$3$H$,$J$$$J$i!"%[%9%H(B
$BIU$-$N=hM}7O$r;H$C$F$$$k!#$@$+$i$3$N<ALd$G=P$F$-$?5,B'$,Ev$F$O(B
$B$^$k!#(B)

References: ANSI Sec. 2.1.2.2.1, Sec. F.5.1; ISO Sec. 5.1.2.2.1,
Sec. G.5.1; H&S Sec. 20.1 p. 416; CT&P Sec. 3.10 pp. 50-51.

11.13:main$B4X?t$N(B3$BHVL\$N0z?t(Benvp$B$O!#(B

A:$B$3$l$O(B($B$h$/8+$+$1$k$1$l$I(B)$BI8=`$G$J$$3HD%$G$"$k!#I8=`$GMQ0U$5$l(B
$B$F$$$k(Bgetenv()$B4X?t$,Ds6!$9$k$3$H0J>e$K4D6-$N>pJs$,I,MW$J$i$P!"(B
$B%0%m!<%P%kJQ?t(Benviron$B$r;H$&$[$&$,$^$@$^$7$J<jCJ$@$m$&(B($B$3$l$bF1(B
$B$8$h$&$KI8=`30$@$,(B)$B!#(B

References: ANSI Sec. F.5.1; ISO Sec. G.5.1; H&S Sec. 20.1 pp.
416-7.

11.14:void main()$B$H@k8@$7$F$&$^$/$$$+$J$$$o$1$,$J$$$H;W$&!#$J$<$J$i(B
main()$B$+$iLa$kBe$o$j$K!"(Bexit()$B$r8F$s$G$$$k$+$i!#$@$$$?$$:#;H$C(B
$B$F$$$k%*%Z%l!<%F%#%s%0%7%9%F%`$O%W%m%0%i%`$N(Bexit$BCM(B/$BLa$jCM$rL5(B
$B;k$9$k!#(B

A:main()$B$+$iLa$C$F$/$k$+$I$&$+$O4X78$J$$$7!"$=$N%9%F!<%?%9$r8+$k(B
$B$+$I$&$+$b4X78$J$$!#LdBj$O(Bmain()$B$N@k8@$,$*$+$7$$$H!"8F$S=P$7B&(B
($B<B9T;~$N%9%?!<%H%"%C%W$N%3!<%I(B)$B$,(Bmain()$B$r@5$7$/8F$S=P$9$3$H$9(B
$B$i$G$-$J$$$+$b$7$l$J$$$3$H$K$"$k(B($B8F=P$7$N5,Ls$K$"$k$+$b$7$l$J(B
$B$$ITE}0l$K$h$k!#<ALd(B11.12$B;2>H(B)$B!#7/$,;H$C$F$$$k%*%Z%l!<%F%#%s%0(B
$B%7%9%F%`$O=*N;;~$N%9%F!<%?%9$rL5;k$7$F!"(Bvoid main()$B$G$b$&$^$/(B
$BF0$/$+$b$7$l$J$$!#$7$+$7!"$3$N$d$j$+$?$O0\?"@-$,Dc$$$7!"@5$7$/(B
$B$b$J$$!#(B

11.15:$BKM$,$$$D$b;H$C$F$$$k!X$[$s$H$*$NGO</8~$1$N(BC$B!Y$K$O!"$$$D$b(Bvoid
main()$B$H=q$$$F$k!#(B

A:$B$?$V$s$=$NK\$NCx<T$O<+J,$bBP>]FI<T$N0l?M$K?t$($F$$$k$N$@$m$&!#(B
$BIT;W5D$J$3$H$K!"NcBj$N%3!<%I$G(Bvoid main()$B$H=q$$$F$kK\$OB?$$!#(B
$B$=$&$$$&K\$O4V0c$C$F$$$k!#(B

11.16:exit(status)$B$NCM$O!"(Bmain()$B$+$i$NLa$jCM(Bstatus$B$HK\Ev$KEy$7$$$N$+!#(B

A:$BEy$7$$$H$-$b$"$k$70c$&$3$H$b$"$k!#5,3J$OEy$7$$$H$$$C$F$k!#$?$@(B
$B$7!"5,3J$K=>$C$F$$$J$$$$$/$D$+$N8E$$%7%9%F%`$N>e$G$O2?$+$7$iLd(B
$BBj$,$"$k!#$^$?!"(Bmain$B$K%m!<%+%k$J%G!<%?$,!"8eJRIU$1$GI,MW$J>l9g(B
$B$O$&$^$/F0$/$3$H$O4|BT$G$-$J$$!#<ALd(B16.4$B$r;2>H!#(B($B:G8e$K!"(B
main()$B$r:F5"E*$K5/F0$9$k>l9g$O>e$N(B2$B$D$OL@$i$+$KF1$8$b$N$G$O$J(B
$B$$!#(B)

References: K&R2 Sec. 7.6 pp. 163-4; ANSI Sec. 2.1.2.2.3; ISO
Sec. 5.1.2.2.3.

11.17:ANSI$B$N(B"$BJ8;zNs$r:n$j=P$9(B"$B%W%j%W%m%;%C%5$N1i;;;R(B#$B$r;H$C$F!"%a%C(B
$B%;!<%8$NCf$K%7%s%\%kDj?t$rA^F~$7$h$&$H$7$F$$$k!#$1$l$I!"(B#$B$O%^(B
$B%/%m$NCM$G$O$J$/%^%/%m$NL>A0$rJ8;zNs$K$7$F$7$^$&!#(B

A:$B%^%/%m$rE83+$7$FJ8;zNs$r:n$j=P$7$?$$$H$-$O0J2<$N$h$&$J(B2$BCJ$N<j(B
$BB3$-$rF'$^$J$1$l$P$J$i$J$$!#(B

#define Str(x) #x
#define Xstr(x) Str(x)
#define OP plus
char *opname = Xstr(OP);

$B$3$l$G(Bopname$B$,!V(BOP$B!W$G$O$J$/!V(Bplus$B!W$K@_Dj$5$l$k!#(B

$BF1$8MM$J2sHr<jCJ$,!"%H!<%/%s$rO"7k$9$k1i;;;R(B##$B$r;H$C$F!"(B2$B$D$N(B
($BL>A0$G$O$J$/(B)$B%^%/%m$NCM$rO"7k$9$k$H$-$KI,MW$K$J$k!#(B

References: ANSI Sec. 3.8.3.2, Sec. 3.8.3.5 example; ISO
Sec. 6.8.3.2, Sec. 6.8.3.5.

11.18:$B!V7Y9p(B:$B%^%/%mE83+$,J8;zNs%j%F%i%kFb$GH/@8!W$H$O2?$r0UL#$7$F$$(B
$B$k$N$+!#(B

A:ANSI$B5,3J@.N)$h$jA0$N%3%s%Q%$%i(B/$B%W%j%W%m%;%C%5$O0J2<$N%^%/%m(B
$BDj5A$r!"(B

#define TRACE(var, fmt) printf("TRACE: var = fmt\n", var)

$B0J2<$NMM$K;H$C$?$i!"(B

TRACE(i, %d);

$B0J2<$N$h$&$KE83+$9$k$b$N$,$"$k!#(B

printf("TRACE: i = %d\n", i);

$B$D$^$j!"%^%/%m$N0z?t$OJ8;zNs%j%F%i%k$dJ8;zDj?t$NCf$G$bE83+$5$l(B
$B$?!#(B

$B%^%/%m$NE83+$O(BK&R$B$G$bI8=`(BC$B$G$b$3$&$$$&Iw$K$ODj5A$5$l$F$$$J$$!#(B
$B%^%/%m$N0z?t$rJ8;zNs$KJQ49$7$?$$$H$-$O!"?7$7$/F3F~$5$l$?(B#$B$H$$(B
$B$&%W%j%W%m%;%C%5$N1i;;;R$rJ8;zNs%j%F%i%k$NO"7k(B($B$3$l$b(BANSI C
$B$GF3F~$5$l$?5!G=(B)$B$H$H$b$K;H$&!#(B

#define TRACE(var, fmt) \
printf("TRACE: " #var " = " #fmt "\n", var)

$B>e$N<ALd(B11.17$B$b;2>H$N$3$H!#(B

References: H&S Sec. 3.3.8 p. 51.

11.19:#ifdef$B$G>C$7$?%3!<%I$G!"4qL/$J9=J8%(%i!<$,H/@8$7$?!#(B

A:ANSI C$B$G$O(B#if$B!"(B#ifdef$B!"(B#ifndef$B$K$h$C$F%3%s%Q%$%k$+$i(B"$B>C$5$l$k(B"
$B%F%-%9%H$b!V%3%s%Q%$%kA0=hM}$N%H!<%/%s$H$7$FM-8z$J$b$N$G$"$k!W(B
$B$H$7$F$$$k!#$3$N$3$H$O=*C<$N$J$$%3%a%s%H$d0zMQId(B($BC;=L$7$?C18l(B
$B$NCf$N%"%]%9%H%m%U%#$OJ8;zDj?t$N;O$^$j$K$_$($k$N$GMWCm0U$G$"$k(B)
$B$,$"$C$F$O$J$i$J$$$7!"$^$?0zMQId$G0O$^$l$?ItJ,$K2~9T$,$"$C$F$O(B
$B$J$i$J$$$3$H$r0UL#$7$F$$$k!#$h$C$F<+A38@8l$N%3%a%s%H$d5<;w%3!<(B
$B%I$O!V8x<0$N!W%3%a%s%H$N6h@Z$j5-9f$G$"$k(B/*$B$H(B*/$B$N4V$K=q$+$J$1$l(B
$B$P$J$i$J$$!#(B($B$?$@$7<ALd(B20.20$B$r;2>H$N$3$H!#<ALd(B10.25$B$b!#(B)

References: ANSI Sec. 2.1.1.2, Sec. 3.1; ISO Sec. 5.1.1.2,
Sec. 6.1; H&S Sec. 3.2 p. 40.

11.20:#pragma$B$H$O2?J*$G!"2?$NLr$KN)$D$N$+!#(B

A:#pragma$B$O!"$&$^$/Dj5A$5$l$?M#0l$N(B"$BHs>o8}(B"$B$rM?$($k!#(B#pragma$B$O!"(B
$B<BAu$K8GM-$N@)8f$d5!G=$N3HD%$r9T$&$N$K;H$&$3$H$,$G$-$k!#$?$H$((B
$B$P%=!<%9%3!<%I$NI=<(J}K!$N@)8f$d!"7Y9p%a%C%;!<%8$NM^@)(B($B8E$$(B
lint$B$N(B/* NOTREACHED */$B$H$$$&%3%a%s%H$N$h$&$K(B)$B$K;H$($k!#(B

References: ANSI Sec. 3.8.6; ISO Sec. 6.8.6; H&S Sec. 3.7 p. 61.

11.21:#pragma once$B$O2?$r0UL#$7$F$$$k$N$+!#%X%C%@%U%!%$%k$NCf$K$$$/(B
$B$D$+=q$$$F$"$C$?!#(B

A:$B$$$/$D$+$N%W%j%W%m%;%C%5$G!"%X%C%@%U%!%$%k$N!V$Y$-Ey!W$r:n$k$N(B
$B$r(B(2$BEY0J>eFI$_9~$^$l$F$bLdBj$,H/@8$7$J$$$h$&$K$9$k$N$r(B)$BMF0W$K(B
$B$9$k$?$a$N3HD%$H$7$FMQ0U$5$l$F$$$k!#<ALd(B10.7$B$G@bL@$7$?(B#ifndef
$B$r;H$C$?5;$HF1Ey$G$"$k$,0\?"@-$,Dc$$!#(B

11.22:char a[3] = "abc";$B$O@5$7$$$N$+!#2?$r0UL#$9$k$N$+!#(B

A:ANSI C$B$G$OJ8K!E*$K@5$7$$(B($B$?$V$s(BANSI C$B@.N)0JA0$N%7%9%F%`$N$$$/(B
$B$D$+$G$b@5$7$/F0$/$@$m$&(B)$B!#$?$@$7K\Ev$K5)$J>u67$G$@$1Lr$K$?$D!#(B
$B$3$l$OBg$-$5$,(B3$B$NG[Ns$r@k8@$7!"Cf?H$r(B'a', 'b', 'c'$B$G=i4|2=$9$k!#(B
$BDL>o$N=*C<5-9f$N(B'\0'$B$OIU$+$J$$!#(B $B$h$C$F$3$NG[Ns$O(BC$B8@8l$N0UL#$G(B
$B$NJ8;zNs$G$O$J$/!"(Bstrcpy$B$d(Bprintf %s$B$J$I$G$O;H$($J$$!#(B

$B$?$$$F$$$N>l9g!"G[Ns$r=i4|2=$9$k$H$-$O!"=i4|2=;XDj;R$N8D?t$O%3(B
$B%s%Q%$%i$K?t$($5$;$k$Y$-$G$"$k!#(B($B>e$N=i4|2=;XDj;R(B"abc"$B$N>l9g$O(B
$B$b$A$m$s7W;;7k2L$O(B4$B$K$J$k(B)$B!#(B

References: ANSI Sec. 3.5.7; ISO Sec. 6.5.7; H&S Sec. 4.6.4 p.
98.

11.24:$B$J$<(Bvoid *$B%]%$%s%?$rAj<j$K;;=Q1i;;$r$9$k$3$H$,$G$-$J$$$N$+!#(B

A:$B%3%s%Q%$%i$K$O%]%$%s%?$,;X$9@h$N%*%V%8%'%/%H$NBg$-$5$,$o$+$i$J(B
$B$$!#;;=Q1i;;$r9T$&A0$K$O!"%]%$%s%?$r(Bchar *$B$^$?$OA`:n$7$h$&$H$7(B
$B$F$$$k%G!<%?7?$N%]%$%s%?$K%-%c%9%H$9$k(B($B<ALd(B4.5$B$r8+$F$+$i$K$9$k(B
$B$3$H(B)$B!#(B

References: ANSI Sec. 3.1.2.5, Sec. 3.3.6; ISO Sec. 6.1.2.5,
Sec. 6.3.6; H&S Sec. 7.6.2 p. 204.

11.25:memcpy()$B$H(Bmemmove()$B$N0c$$$O!#(B

A:memmove()$B$,!"%3%T!<85$H%3%T!<@h$K=E$J$j$,$"$C$?$H$-$b$&$^$/07(B
$B$&$3$H$rJ]>Z$7$F$$$k$N$KBP$7!"(Bmemcpy()$B$O$=$s$JJ]>Z$O$7$F$$$J$$!#(B
$B$R$g$C$H$7$?$i(Bmemcpy()$B$O$=$l$rMxMQ$7$F8zN($N$$$$<BAuJ}K!$r<h$C(B
$B$F$$$k$+$b$7$l$J$$!#5?$7$$$H$-$O(Bmemmove()$B$r;H$&$[$&$,0BA4$G$"(B
$B$k!#(B

References: K&R2 Sec. B3 p. 250; ANSI Sec. 4.11.2.1,
Sec. 4.11.2.2; ISO Sec. 7.11.2.1, Sec. 7.11.2.2; Rationale
Sec. 4.11.2; H&S Sec. 14.3 pp. 341-2; PCS Sec. 11 pp. 165-6.

11.26:malloc(0)$B$O!"$I$&$$$&F0:n$r$9$Y$-$J$N$+!#%L%k%]%$%s%?$rJV$9(B
$B$N$+!"(B0$B%P%$%H$NNN0h$r;X$9%]%$%s%?$rJV$9$N$+!#(B

A:ANSI/ISO$B5,3J$K$O$I$A$i$G$b$+$^$o$J$$$H=q$$$F$"$k!#F0:n$O=hM}7O0M(B
$BB8(B($B<ALd(B11.33$B;2>H(B)$B$G$"$k!#(B

References: ANSI Sec. 4.10.3; ISO Sec. 7.10.3; PCS Sec. 16.1 p.
386.

11.27:$B$J$<(BANSI$B5,3J$O!"30It<1JL;R$N(B7$BJ8;zL\0J9_$K0UL#$,$"$k$3$H$dBgJ8(B
$B;z>.J8;z$N0c$$$rJ]>Z$7$J$$$N$+!#(B

A:$BLdBj$O8E$$%j%s%+$K$"$k!#8E$$%j%s%+$O(BANSI$B5,3J$N4IM}2<$K$J$$$7!"(B
$B8E$$%j%s%+$,:\$C$?%7%9%F%`$r;H$C$F(BC$B%3%s%Q%$%i$r3+H/$7$F$$$k?M(B
$B$N4IM}2<$K$b$J$$!#<1JL;R$O:G=i$N(B6$BJ8;z$7$+M-8z$G$J$$$H@)8B$7$F(B
$B$$$k$N$G$"$C$F!"<1JL;R$ND9$5$r(B6$BJ8;z$K@)8B$9$k$H$$$&$3$H$G$O$J(B
$B$$!#$3$N@)8B$O$&$s$6$j$5$;$i$l$k$,BQ$($i$l$J$$$b$N$G$b$J$$!#$3(B
$B$N@)8B$O!"5,3J$NCf$G!V$9$?$l$D$D$"$k!W$H5-=R$5$l$F$$$k!#>-Mh$N(B
$B2~Dj$G@)8B$O4KOB$5$l$=$&$G$"$k!#(B

$B@)8B$r;}$D8=>u$N%j%s%+$X$N>yJb$O!"0lIt$N?M$,$I$s$J$KH?BP$7$h(B
$B$&$H!"9T$o$J$1$l$P$J$i$J$$(B(Rationale$B$O$3$N@)8B$r;D$7$F$*$+$J$1(B
$B$l$P$J$i$J$$$3$H$r!V0lHV?I$$$3$H!W$H=q$$$F$$$k(B)$B!#$b$7;?@.$G$-(B
$B$J$$$J$i!"$^$?$O@)8B$N$"$k%j%s%+$r;H$C$?%3%s%Q%$%i$,30It<1JL(B
$B;R$K$b$C$HB?$/$NJ8;z?t$rM-8z$K07$C$F$$$k$H%W%m%0%i%^$K8+$;$k(B
$B%H%j%C%/$r;W$$IU$$$?$i!"(BX3.159$B$N(BRationale($B<ALd(B11.1$B$r;2>H(B)$B$N(B
3.1.2$B9`$rFI$`$3$H!#$3$N>O$O$$$/$D$+$NJ}K!$r5DO@$7!"$J$<$=$&$$(B
$B$&J}K!$r6/@)$9$k$3$H$,$G$-$J$+$C$?$+@bL@$7$F$$$k!#(B

References: ANSI Sec. 3.1.2, Sec. 3.9.1; ISO Sec. 6.1.2,
Sec. 6.9.1; Rationale Sec. 3.1.2; H&S Sec. 2.5 pp. 22-3.

11.29:$B;d$N;H$C$F$$$k%3%s%Q%$%i$O!"9M$($i$l$k8B$j$N0lHVC1=c$J%F%9%H%W(B
$B%m%0%i%`$KBP$7$F$b!"$"$j$H$"$i$f$kJ8K!%(%i!<$G$O$M$D$1$k!#(B

A:$B$-$C$H7/$,;H$C$F$$$k$N$O(BANSI$B5,3J$,7h$^$kA0$K:n$i$l$?%3%s%Q%$%i(B
$B$G!"4X?t%W%m%H%?%$%W$NN`$r$O$M$D$1$k$+$i$G$"$k!#(B

$B<ALd(B1.31, 10.9, 11.30, 16.2a$B$b;2>H$N$3$H!#(B

11.30:ANSI$B%3%s%Q%$%i$r;H$C$F$$$k$N$K!"(BANSI/ISO$B5,3J$N%i%$%V%i%j%k!<(B
$B%A%s$GL$Dj5A$H$J$k$b$N$,$"$k$N$O$J$<$+!#(B

A:ANSI$B$N9=J8$O<u$1IU$1$k$1$l$I(BANSI$B8_49$N%X%C%@%U%!%$%k$d%i%s%?%$(B
$B%`%i%$%V%i%j$,F3F~$5$l$F$$$J$$%3%s%Q%$%i$ODA$7$/$J$$!#(B($B<B:]$K(B
$B$O$3$N$h$&$J>u67$O!"%Y%s%@!<$,Ds6!$7$F$$$k$N$G$O$J$$(Bgcc$B$N$h$&(B
$B$J%3%s%Q%$%i$r;H$&$H$-$K$O$h$/$"$k$3$H$G$"$k!#(B) $B<ALd(B11.29,
13.25, 13.26$B$b;2>H$N$3$H!#(B

11.31:$BC/$+8E$$=q$-J}$N(BC$B%W%m%0%i%`$r(BANCI C$B$KJQ49$9$k%W%m%0%i%`$d!"$=(B
$B$NH?BP$r9T$&%D!<%k!"$^$?<+F0E*$K4X?t%W%m%H%?%$%W$r@8@.$9$k(B
$B%D!<%k$r;}$C$F$$$J$$$+!#(B

A:protoize$B$H(Bunprotize$B$H$$$&$N$,!"4X?t%W%m%H%?%$%W$+$i8E$$=q$-J}(B
$B$N4X?tDj5A$d@k8@$X!"$"$k$$$O$=$N5U$r<B9T$9$k%D!<%k$G$"$k(B($B$3$l(B
$B$i$N%D!<%k$O!"(B"$B8E$$(B"$B=q$-J}$N(BC$B$H(BANSI C$B4V$N40`z$JJQ49%D!<%k$G$O(B
$B$J$$(B)$B!#(BFSF$B$N(BGNU C$B%3%s%Q%$%i$N@5<0$JG[I[$N0lIt$G$"$k!#<ALd(B18.3
$B$b;2>H$N$3$H!#(B

$B%W%m%0%i%`(Bunproto($B%5%$%H(Bftp.win.tue.nl$B$N%U%!%$%k(B
/pub/unix/unproto5.shar.Z)$B$O!"%W%j%W%m%;%C%5$H%3%s%Q%$%i$N4V(B
$B$KF~$C$F!"(BANSI C$B$r8E$$(BC$B$K(B($B%3%s%Q%$%k;~$K(B)$BJQ49$9$k%U%#%k%?!<$G(B
$B$"$k!#(B

GNU GhostScript$B%Q%C%1!<%8$K$O(Bansi2knr$B$H$$$&!"$A$g$C$H$7$?%W%m(B
$B%0%i%`$,IU$$$F$$$k!#(B

ANSI C$B$G=q$$$?%W%m%0%i%`$r8E$$(BC$B$KJQ49$9$kA0$K!"$3$N$h$&$JJQ49(B
$B$O0BA4$K9T$&$3$H$b<+F0E*$K9T$&$3$H$b$G$-$J$$$3$H$KCm0U$9$k$3$H!#(B
ANSI C$B$O(BK&R$B$K$J$$?7$7$$5!G=$rF3F~$7!"$h$jJ#;($K$J$C$F$$$k!#%W(B
$B%m%H%?%$%WIU$-$N4X?t$N8F$S=P$7$K$OFC$KCm0U$9$k$3$H!#$?$V$sL@<((B
$BE*$J%-%c%9%H$,I,MW$H$J$k$@$m$&!#<ALd(B11.3$B$H(B11.29$B$b;2>H$N$3$H!#(B

$B4X?t%W%m%H%?%$%W$N<+F0@8@.%=%U%H$O$$$/$D$+B8:_$9$k!#B?$/$O(Blint
$B$K<j$rF~$l$?$b$N$K$J$C$F$$$k!#(BCPROTO$B$H$$$&%W%m%0%i%`$,(B1992$BG/(B3
$B7n$K(Bcomp.sources.misc$B$K%]%9%H$5$l$?!#B>$K$b(Bcextract$B$H$$$&%D!<(B
$B%k$,B8:_$9$k!#%3%s%Q%$%i$N%Y%s%@!<$NB?$/$OC1=c$J%f!<%F%#%j%F%#(B
$B$rMQ0U$7$F$$$k!#<ALd(B18.16$B$b;2>H$N$3$H!#(B($B8E$$%3!<%IMQ$K%W%m%H%?(B
$B%$%W$r@8@.$9$k$H$-$O(B"$B69$$(B"$B0z?t$KCm0U$9$k$3$H!#<ALd(B11.3$B$b;2>H$N(B
$B$3$H!#(B)

$B:G8e$K0l8@!#BgNL$N8E$$%3!<%I$r(BANSI C$B$KJQ49$9$kI,MW$,K\Ev$K$"$k(B
$B$N$+!#8E$$=q$-J}$N4X?t$N9=J8$O$=$N$^$^;H$($k!#$"$o$F$FJQ49$9$k(B
$B$H%P%0$r;}$A9~$_$d$9$$!#(B($B<ALd(B11.3$B$r;2>H!#(B)

11.32:$B$J$<(BANSI$B=`5r$,Gd$jJ*$N(BC$B%3%s%Q%$%i9lE7$,!"$3$N%3!<%I$r$O$M$D$1(B
$B$k$N$+!#;d$O$3$N%3!<%I$O(BANSI$B$K5,Dj$5$l$?DL$j$@$H9M$($k!#$J$<$J(B
$B$i(Bgcc$B$J$i<u$1IU$1$k$+$i$G$"$k!#(B

A:$B$?$$$F$$$N%3%s%Q%$%i$O5,3J30$N3HD%5!G=$r$$$/$D$+MQ0U$7$F$$$k!#(B
gcc$B$O$=$N:G1&Mc$G$"$k!#$O$M$i$l$?%3!<%I$,!"$=$N$h$&$J3HD%5!G=(B
$B$r;H$C$F$$$J$$<+?.$,$"$k$+!#8@8l$N@-<A$rD4$Y$k$N$KFCDj$N%3%s%Q(B
$B%$%i$@$1$G<B83$9$k$3$H$O$h$$9M$($G$O$J$$!#$9$J$o$A!"5,3J$,3HD%(B
$B$rMFG'$7$F$$$k$+$b$7$l$J$$$7!"<B83$K;H$C$?%3%s%Q%$%i$N8m$j$+$b(B
$B$7$l$J$$!#<ALd(B11.35$B$b;2>H$N$3$H!#(B

11.33:$B=hM}7ODj5A$N(B(implementation-defined)$BF0:n!"L$5,Dj$N(B
(unspecified)$BF0:n!"L$Dj5A$N(B(undefined)$BF0:n$r6hJL$9$k$3$H$r@$$N(B
$BCf$G$O=E;k$9$k$h$&$@!#0c$$$O(B?

A:$B4J7i$K@bL@$9$k!#=hM}7ODj5A$NF0:n$H$O!"$I$&?6$kIq$&$+$r<BAu$,A*(B
$BBr$7$F!"$=$NF0:n$rJ8=q$K$9$k$3$H$r0UL#$9$k!#L$5,Dj$NF0:n$H$O!"(B
$B$I$&?6$kIq$&$+$r<BAu$,A*Br$7$J$1$l$P$J$i$J$$$,J8=q$K$9$kI,MW$O(B
$B$J$$$3$H$r0UL#$9$k!#L$Dj5A$H$O!"K\Ev$K$I$s$J$3$H$,$*$3$C$F$bIT(B
$B;W5D$G$O$J$$$3$H$r0UL#$9$k!#$I$N>l9g$K$b5,3J$O!"I,MW>r7o$r2]$7(B
$B$F$$$J$$!#:G=i$N(B2$B$D$NF0:n$K$D$$$F5,3J$O;~!9$"$j$=$&$JF0:n$r$$(B
$B$/$D$+Ds0F$7$F$$$k(B($B$=$N$J$+$+$iA*Br$7$J$1$l$P$J$i$J$$$+$b$7$l(B
$B$J$$(B)$B!#(B

$B5,3J$OL$Dj5A$NF0:n$KD>LL$7$?$H$-$N%3%s%Q%$%i$NF0:n$K$D$$$F2?$b(B
$BI,MW>r7o$r@_Dj$7$F$$$J$$$3$H$KCm0U$9$k$3$H!#$@$+$i%3%s%Q%$%i$O(B
$BK\Ev$K2?$r$7$F$b$$$$$3$H$K$J$k!#%W%m%0%i%`$NCf$KL$Dj5A$NF0:n$,(B
$B$"$C$F$b2?$H$+$d$C$F$$$1$k$H9M$($k$N$OBgJQ4m81$G$"$k!#Hf3SE*4J(B
$BC1$JNc$,<ALd(B3.2$B$K=P$F$/$k!#(B

$B0\?"@-$N$"$k%3!<%I$r=q$-$?$$$N$J$i>e$N(B3$B$D$N0c$$$rL5;k$9$k$3$H(B
$B$,$G$-$k!#$3$l$i(B3$B$D$NF0:n$N$I$l$K$bMj$i$J$$%3!<%I$r=q$3$&$H;W(B
$B$&$@$m$&$+$i!#(B

$B<ALd(B3.9$B$H(B11.34$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 1.6; ISO Sec. 3.10, Sec. 3.16, Sec. 3.17;
Rationale Sec. 1.6.

11.34:ANSI$B5,3J$K$OB?$/$NO@E@$,L$Dj5A$N$^$^J|CV$7$F$"$k$3$H$r9M$($k$H(B
$B$>$C$H$9$k!#5,3J$N;E;v$O$3$l$i$NLdBj$rI8=`2=$9$k$3$H$G$O$J$+$C(B
$B$?$N$+!#(B

A:C$B8@8l$O@N$+$i$=$N0lIt$O%3%s%Q%$%i$d%O!<%I%&%(%"$,$I$&<BAu$5$l(B
$B$F$I$&?6$kIq$C$F$b$$$$$h$&$K$J$C$F$$$k!#$3$&$$$&$U$&$K$o$6$H$O$C(B
$B$-$j$5$;$J$$$3$H$G!"%3%s%Q%$%i$O$"$j$=$&$b$J$$$h$&$J>u67$K$^$G(B
$BE,@Z$KDj5A$5$l$?F0:n$rJ]>Z$9$k$3$H$N$?$a$K$9$Y$F$N%W%m%0%i%`$K(B
$BM>7W$J%3!<%I$N=E2Y$rGXIi$o$;$k$3$H$J$/!"$h$/$"$k>l9g$K$D$$$F$:$C(B
$B$H8zN($N$$$$%3!<%I$r@8@.$9$k$3$H$,$G$-$k!#$h$C$F5,3J$O$=$l$^$G(B
$B$KB8:_$7$?=,47$rC1$KL@J82=$7$?$K$9$.$J$$!#(B

$B%W%m%0%i%_%s%08@8l$N5,3J$O8@8l$N;HMQ<T$H%3%s%Q%$%i$N<BAu<T$N4V(B
$B$N7@Ls$H9M$($l$P$$$$!#$=$N7@Ls$N0lIt$O%3%s%Q%$%i<BAu<T$,Ds6!$r(B
$BLsB+$7$?5!G=$G!";H$$<j$OMQ0U$5$l$F$$$k$b$N$@$H;W$$$3$s$G$$$$!#(B
$B$7$+$7$J$,$i!"JL$NItJ,$O%f!<%6!<$,=>$&$HLsB+$7$?7h$^$j$G!"<BAu(B
$B<T$O<i$C$F$b$i$($k$H;W$$$3$s$G$$$$!#N>J}$,<+J,$NLsB+$r<i$k$+$.(B
$B$j!"%W%m%0%i%`$O4hD%$l$PF0$/2DG=@-$,$"$k!#$I$A$i$+$G$b8xLs$rGK(B
$B$l$P!"$I$s$JItJ,$K$D$$$F$b3N<B$KF0$/$H$OJ]>Z$G$-$J$$!#(B

$B<ALd(B11.35$B$b;2>H$N$3$H!#(B

References: Rationale Sec. 1.1.

11.35:i = i++$B$NF0:n$,L$Dj5A$@$H$&$k$5$/$$$&?M$,$$$k$1$l$I(BANSI$B=`(B
$B5r$N%3%s%Q%$%i$G;n$7$F;d$,;W$&$H$*$j$N7k2L$rF@$?!#(B

A:$BL$Dj5A$NF0:n$K=P$/$o$7$?$i%3%s%Q%$%i$O9%$-$J$h$&$K?6$kIq$&(B($B<B(B
$BAu$,Dj5A$7$?F0:n!"$"$k$$$OL$5,Dj$N?6$kIq$$$K=P$/$o$7$?$H$-$K$b(B
$B$"$kDxEY9%$-$J$h$&$K?6$kIq$&(B)$B!#$=$NCf$K$O$"$J$?$,4|BT$7$?7k2L(B
$B$b4^$`!#$3$s$J$3$H$KMj$k$N$OGO</$2$F$$$k!#<ALd(B11.32$B$H(B11.33$B$H(B
11.34$B$r;2>H$N$3$H!#(B

12$B>O(B $BI8=`F~=PNO(B(stdio)$B%i%$%V%i%j(B

12.1:$B$J$<0J2<$N%3!<%I$O$&$^$/F0$+$J$$$N$+!#(B

char c;
while((c = getchar()) != EOF) ...

A:getchar()$B$NLa$jCM$r3JG<$9$kJQ?t$O(Bint$B$G$J$1$l$P$J$i$J$$!#(B
getchar()$B$O!"J8;z7?$N$"$i$f$kCM$rJV$9$@$1$G$J$/(BEOF$B$bJV$9!#(B
getchar()$B$NLa$jCM$r(Bchar$B$GEO$9$H!"IaDL$NJ8;z$,JV$C$F$-$?$N$K(BEOF
$B$H8m2r$5$l$?$j!"(BEOF$B$,B>$NCM$KJQ$($i$l$F(B($BFC$K%G!<%?7?(Bchar$B$,Id9f(B
$B$J$7$N>l9g(B)$B!"$$$D$K$J$C$F$b(BEOF$B$,=P$F$3$J$$$+$b$7$l$J$$!#(B

References: K&R1 Sec. 1.5 p. 14; K&R2 Sec. 1.5.1 p. 16; ANSI
Sec. 3.1.2.5, Sec. 4.9.1, Sec. 4.9.7.5; ISO Sec. 6.1.2.5,
Sec. 7.9.1, Sec. 7.9.7.5; H&S Sec. 5.1.3 p. 116, Sec. 15.1,
Sec. 15.6; CT&P Sec. 5.1 p. 70; PCS Sec. 11 p. 157.

12.2:$B$J$<0J2<$N%3!<%I$O:G8e$N9T$r(B2$B2s%3%T!<$9$k$N$+!#(B

while(!feof(infp)) {
fgets(buf, MAXLINE, infp);
fputs(buf, outfp);
}

A:C$B$G$O!"(BEOF$B$OF~NO%k!<%A%s$,FI$b$&$H$7$F%U%!%$%k$N=*$o$j(B
(End-Of-File)$B$K$?$I$jCe$$$?8e$G$"$k$3$H$r<($7$F$$$k$@$1$G$"$k(B
($B8@$$49$($l$P(BC$B8@8l$NF~=PNO$O(BPascal$B$NF~=PNO$H$O0[$J$k(B)$B!#$?$$$F(B
$B$$$OF~NO4X?t(B($B$3$N>l9g$O(Bfgets)$B$NLa$jCM$r%A%'%C%/$9$l$P$h$$!#(B
feof()$B$r;H$&I,MW$,A4$/$J$$>l9g$,B?$$!#(B

References: K&R2 Sec. 7.6 p. 164; ANSI Sec. 4.9.3, Sec. 4.9.7.1,
Sec. 4.9.10.2; ISO Sec. 7.9.3, Sec. 7.9.7.1, Sec. 7.9.10.2; H&S
Sec. 15.14 p. 382.

12.4:$B;d$N%W%m%0%i%`$N%W%m%s%W%H$HCf4V=PNO$,!"2hLL>e$K$"$i$o$l$J$$$3(B
$B$H$,$"$k!#FC$K!"%Q%$%W$rDL$7$F=PNO$rB>$N%W%m%0%i%`$KEO$7$?$H$-(B
$B$K!"$3$NLdBj$,5/$3$k!#(B

A:$B=PNO$,8+$($FM_$7$$$H$3$m$G$O!"I,$:L@<(E*$K(Bfflush(stdout)$B$r;H$C(B
$B$F=PNO$r$O$-$@$9$3$H!#$[$C$F$*$$$F$b$$$/$D$+$N;EAH$_$,!"(B
fflush()$B$r(B"$BE,@Z$J$H$-$K(B"$B<B9T$7$F$/$l$k!#$7$+$7!"$3$l$O(Bstdout$B$,(B
$BC<Kv$N$H$-$K$7$+E,1~$5$l$J$$$3$H$,B?$$(B($B<ALd(B12.24$B$b;29M$N$3$H(B)$B!#(B

References: ANSI Sec. 4.9.5.2; ISO Sec. 7.9.5.2.

12.5:RETURN$B%-!<$,2!$5$l$k$N$rBT$D$3$H$J$/!"0lEY$K0lJ8;z$:$DFI$`$3$H(B
$B$,$G$-$k$+!#(B

A:$B<ALd(B19.1$B$r;2>H$N$3$H!#(B

12.6:$B$I$&$9$l$P!"(Bprintf$B$N%U%)!<%^%C%HJ8;zNs$r;H$C$F(B'%'$B$r=PNO$G$-$k(B
$B$N$+!#(B\%$B$r;n$7$?$1$l$I!"$&$^$/$$$+$J$+$C$?!#(B

A:%%$B$H$$$&$U$&$K!"(B%$B$rFs2sB3$1$F=q$/!#(B

\%$B$G$O$&$^$/$$$+$J$$!#%P%C%/%9%i%C%7%e(B\$B$O%3%s%Q%$%i$N%(%9%1!<(B
$B%W%7!<%1%s%9$G!"(Bprintf$B$N%(%9%1!<%W%7!<%1%s%9$O(B%$B$G$"$k!#(B

$B<ALd(B19.17$B$b;2>H$N$3$H!#(B

References: K&R1 Sec. 7.3 p. 147; K&R2 Sec. 7.2 p. 154; ANSI
Sec. 4.9.6.1; ISO Sec. 7.9.6.1.

12.9:%lf$B$r(Bprintf()$B$G;H$&$N$O4V0c$C$F$$$k$H65$($F$/$l$??M$,$$$?!#(B
scanf()$B$,(B%lf$B$r;H$&$N$K!"$I$&$7$F(Bprintf()$B$O(B%f$B$r;H$&$N$+!#(B

A:printf()$B$N(B%f$B;XDj;R$O(Bfloat$B$N0z?t$K$b(Bdouble$B$N0z?t$K$b:nMQ$9$k!#(B
"$B>JN,;~$N0z?t$N3J>e$2(B"$B$K$h$j(B($B$3$N5,B'$O(Bprintf$B$N$h$&$J2DJQ8D?t(B
$B$N0z?t$r<h$k4X?t$K!"$=$N4X?t$N%W%m%H%?%$%W$,%9%3!<%WFb$G$b30$G(B
$B$bE,1~$5$l$k(B)$B!"%G!<%?7?(Bfloat$B$NJQ?t$O(Bdouble$B$K3J>e$2$5$l$k!#$h$C(B
$B$F(Bprintf()$B$,8+$k$N$O(Bdouble$B$NJQ?t$@$1$G$"$k!#<ALd(B12.13, 15.2$B$b(B
$B;2>H$N$3$H!#(B

References: K&R1 Sec. 7.3 pp. 145-47, Sec. 7.4 pp. 147-50; K&R2
Sec. 7.2 pp. 153-44, Sec. 7.4 pp. 157-59; ANSI Sec. 4.9.6.1,
Sec. 4.9.6.2; ISO Sec. 7.9.6.1, Sec. 7.9.6.2; H&S Sec. 15.8 pp.
357-64, Sec. 15.11 pp. 366-78; CT&P Sec. A.1 pp. 121-33.

12.10:printf()$B$G%U%#!<%k%I$NI}$r2DJQ$K<BAu$9$k$N$O$I$&$9$l$P$$$$$N$+!#(B
$B$D$^$j!"(B%8d$B$H=q$/BX$o$j$K!"<B9T;~$KI}$r;XDj$7$?$$!#(B

A:printf("%*d", width, n)$B$,7/$NK>$`$3$H$r$d$C$F$/$l$k!#<ALd(B12.15
$B$b;2>H$N$3$H!#(B

References: K&R1 Sec. 7.3; K&R2 Sec. 7.2; ANSI Sec. 4.9.6.1; ISO
Sec. 7.9.6.1; H&S Sec. 15.11.6; CT&P Sec. A.1.

12.11:$B@iC10L$G%3%s%^$G@Z$C$F?t$rI=<($9$k$N$O$I$&$9$l$P$h$$$+!#DL2_$K(B
$B9g$o$;$?=q<0$GI=<($9$k$N$O!#(B

A:<locale.h>$B$K$"$k%k!<%A%s$G$3$l$i$NA`:n$KBP1~$9$k$b$N$b=P;O$a$?!#(B
$B$7$+$7>e$N$I$A$i$N;E;v$K$D$$$F$bI8=`$N%k!<%A%s$H$$$&$N$OB8:_$7(B
$B$J$$!#(B(printf()$B$,!"$=$NEZCO$N47=,$K=>$&$3$H$H$$$($P>.?tE@$NI=(B
$B<($K;H$&J8;z$rJQ99$9$k$3$H$@$1$G$"$k!#(B)

References: ANSI Sec. 4.4; ISO Sec. 7.4; H&S Sec. 11.6 pp. 301-4.

12.12:$B$J$<%3!<%I(Bscanf("%d", i);$B$,$&$^$/F0$+$J$$$N$+!#(B

A:scanf()$B$O!"CM$r=q$-9~$`JQ?t$X$N%]%$%s%?$rI,MW$H$9$k!#(B
scanf("%d", &i);$B$H=q$+$J$1$l$P$J$i$J$$!#(B

12.13:$B$J$<0J2<$N%3!<%I$OF0$+$J$$$N$+!#(B

double d;
scanf("%f", &d);

A:printf()$B$H0c$C$F(Bscanf()$B$G$O(Bdouble$B$K$O(B%lf$B$r!"(Bfloat$B$K$O(B%f$B$r;H$&!#(B
$B<ALd(B12.9$B$b;29M$N$3$H!#(B

12.15:scanf()$B$N=q<0J8;zNs$G2DJQ$NI}$r;XDj$9$k$N$O$I$&$d$l$P$h$$$+!#(B

A:$B$G$-$J$$!#(Bscanf()$B$N=q<0J8;zNs$K(B*$B$r=q$/$H!"BeF~$rM^(B
$B@)$9$k$3$H$H$J$k!#(BANSI$B$NJ8;zNs:n@.(B(stringizing)$B$dJ8;zNsO"7k$N(B
$B5!G=$r;H$C$F!"$[$H$s$IF1$8$3$H$,$G$-$k!#(Bscanf()$B$N=q<0J8;zNs$r(B
$B$=$N>l$G:n$k$N$b$$$$!#(B

12.17:scanf()$B$r;H$C$F%-!<%\!<%I$+$iFI$_<h$k$H!"$b$&(B1$B9TM>7W$KBG$A9~(B
$B$`$^$G!"%O%s%0$9$k$h$&$@!#(B

A:$BCN$i$J$/$F6C$/$@$m$&$1$I!"(Bscanf$B$N=q<0J8;zNs$G(B\n$B$O2~9T$r0UL#$9(B
$B$k$N$G$O$J$/!"6uGr$,B3$/$+$.$jFI$s$G$O<N$F$k$3$H$r0UL#$7$F$$$k!#(B
$B<ALd(B12.20$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. B1.3 pp. 245-6; ANSI Sec. 4.9.6.2; ISO
Sec. 7.9.6.2; H&S Sec. 15.8 pp. 357-64.

12.18:scanf$B$N(B%d$B$r;H$C$F?t;z$rFI$s$G!"J8;zNs$r(Bgets()$B$GFI$b$&$H$7$F$$(B
$B$k!#$1$l$I%3%s%Q%$%i$O(Bgets()$B$N8F$S=P$7$rHt$P$7$F$$$k$h$&$@!#(B

A:scanf$B$N(B%d$B$O$*$7$j$N2~9T$O?)$Y$F$/$l$J$$!#$b$7F~NO$N?t$N$9$08e(B
$B$m$K2~9T$,Mh$?$i!"$=$N2~9T$O(Bgets()$B$NF~NO$H$7$F$N>r7o$rK~B-$9$k!#(B

$B0lHL$K!"(Bscanf()$B$N8F$S=P$7$H!"(Bgets()($B$=$NB>$NF~NO%k!<%A%s$b(B)$B$N(B
$B8F$S=P$7$r:.$<$F;H$C$F$O$$$1$J$$!#(Bscanf()$B$N2~9T$N07$$$,L/$J$N(B
$B$GI,$:$d$C$+$$$J$3$H$K$J$k!#(Bscanf()$B$G$9$Y$FFI$_9~$`$+!"(Bscanf()
$B$r;H$o$J$$$+$N$I$A$i$+$G$"$k!#(B

$B<ALd(B12.20, 12.23$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 4.9.6.2; ISO Sec. 7.9.6.2; H&S Sec. 15.8
pp. 357-64.

12.19:scanf()$B$r;H$&$N$H$-$K!"$3$C$A$NK>$s$@?tCM$r%f!<%6!<$,F~NO$7$?(B
$B$3$H$r3N$+$a$k$N$K!"(Bscanf()$B$NLa$jCM$rD4$Y$k$[$&$,0BA4$@$H9M$((B
$B$?!#$1$l$I!"$?$^$KL58B%k!<%W$KF~$C$F$7$^$&$h$&$@!#(B

A:scanf()$B$,?t;z$rJQ49$7$h$&$H$9$k$H$-$K$O!"?t;z$G$J$$J8;z$K=P$/(B
$B$o$9$HJQ49$r=*N;$7!"$=$N>e$=$NJ8;z$rF~NO%9%H%j!<%`$KJ|CV$9(B
$B$k!#$7$?$,$C$FB>$N<jCJ$r<h$i$J$$$H!"?t;z$G$J$$F~NO$,;W$$$,$1$J(B
$B$$$H$3$m$G=P$F$/$k$H(Bscanf()$B$,2?EY$b(B"$B%8%c%`(B"$B$C$F$7$^$&!#(Bscanf()
$B$OLdBj$H$J$kJ8;z$rDL$j2a$.$F!"$=$N8e$m$K$"$k@5$7$$%G!<%?$K9T$/(B
$B$3$H$O$J$$!#$b$7%f!<%6!<$,(Bscanf()$B$N?tCM$N%U%)!<%^%C%H$G$"$k(B%d
$B$d(B%f$B$J$I$KBP$7$F(B'x'$B$N$h$&$JJ8;z$rF~NO$7$?$H$9$k$H!"C1$K%W%m%s(B
$B%W%H$r$^$?=P$7$FF1$8(Bscanf()$B$r8F$S=P$9$h$&$J%3!<%I$O!"B(:B$KF1(B
$B$8(B'x'$B$K=P$/$o$9$3$H$K$J$k!#(B

$B<ALd(B12.20$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 4.9.6.2; ISO Sec. 7.9.6.2; H&S Sec. 15.8
pp. 357-64.

12.20:$B$I$&$7$FC/$b$,(Bscanf()$B$r;H$o$J$$$[$&$,$$$$$H$$$&$N$+!#Be$o$j$K(B
$B2?$r;H$($P$$$$$N$+!#(B

A:scanf()$B$K$O?tB?$/$NLdBj$,$"$k!#<ALd(B12.17, 12.18, 12.19$B$r;2>H$N(B
$B$3$H!#$5$i$K(Bscanf()$B$N(B%s$B%U%)!<%^%C%H$O(Bgets()$B$,Jz$($F$$$k$N$H(B($B<A(B
$BLd(B12.23$B$r;2>H(B)$BF1$8LdBj$rJz$($F$$$k!#$D$^$j<u$1<h$j$K;H$&%P%C%U%!(B
$B$,$"$U$l$k?4G[$,$J$$$HJ]>Z$9$k$N$OFq$7$$!#(B

$B$b$C$H0lHLE*$JOC$H$7$F!"(Bscanf()$B$O$+$J$j$+$C$A$j$7$?9=B$$r;}$C(B
$B$?!"=q<0$K$N$C$H$C$?F~NO$rBP>]$K@_7W$5$l$F$$$k(B($B<B:](Bscanf$B$H$$$&(B
$BL>A0$O!V(Bscan formatted($B=q<0$r;}$C$?$b$N$r%9%-%c%s$9$k(B)$B$H$$$&$H(B
$B$3$m$+$iMh$F$$$k!W(B)$B!#Cm0U$7$F$$$l$P!"=hM}$,@.8y$7$?$+$I$&$+$o(B
$B$+$k!#$7$+$7!"$I$3$G<:GT$7$?$+$OBgBN$N$H$3$m$7$+J,$+$i$J$$$7!"(B
$B$I$&$$$&Iw$K$H$+2?8N$+$O$<$s$<$s$o$+$i$J$$!#(Bscanf()$B$r;H$C$?>l(B
$B9g%(%i!<$+$i$N$^$C$H$&$JI|5"$O$[$H$s$IIT2DG=$G$"$k!#$?$$$F$$$O(B
1$B9T4]!9(B(fgets()$B$+$J$K$+$G(B)$BFI$_9~$s$G!"(Bsscanf()$B$+$=$NB>$N5;$r;H$C(B
$B$F2r<a$9$k$[$&$,$:$C$H4JC1$G$"$k!#(B(strtol()$B$H$+(Bstrtok()$B$H$+(B
atoi()$B$H$$$C$?%k!<%A%s$bLr$KN)$D$3$H$,B?$$!#<ALd(B13.6$B$b;2>H$N$3(B
$B$H!#(B)$B$I$&$7$F$b(Bsscanf()$B$r;H$o$J$1$l$P$J$i$J$1$l$P!"La$jCM$rD4(B
$B$Y$F$3$A$i$,4|BT$7$??t$@$19`L\$,8+$D$+$C$?$3$H$r3NG'$9$k$N$rK:(B
$B$l$F$O$$$1$J$$!#$5$i$K!"(B%s$B$r;H$&$H$-$O!"%P%C%U%!$r$"$U$l$5$;$J(B
$B$$$h$&$KCm0U$9$k$3$H!#(B

References: K&R2 Sec. 7.4 p. 159.

12.21:sprinft$B$N8F$S=P$7$G!"=q$/@h$N%P%C%U%!$,$I$l$/$i$$$NBg$-$5$,I,(B
$BMW$+$I$&$9$l$P$o$+$k$+!#(Bsprinft$B$N8F$S=P$7$G=q$/@h$N%P%C%U%!$r!"(B
$B$I$&$9$l$P$"$U$l$5$;$:$K$9$`$+!#(B

A:$B$3$N(B2$B$D$N1T$$<ALd$K$ON)GI$J2rEz$O(B($B$^$@(B)$B$J$$!#$J$$$H$$$&$3$H$O!"(B
$B$3$l$^$G$NI8=`F~=PNO%i%$%V%i%j$N:GBg$N7g4Y$r$?$V$sI=$o$7$F$$$k!#(B

$B=q<0J8;zNs$,4{CN$G7k9=C1=c$J$H$-$O!"Kh2sFCJL$JJ}K!$G%P%C%U%!$N(B
$BBg$-$5$rM=A[$9$k$3$H$,$G$-$k!#=q<0$,(B1$B$D$+(B2$B$D$N(B%s$B$+$i=PMh$F$$$k(B
$B$H$-$O!"8GDj$NJ8;z$NItJ,$O<+J,$G?t$($F(B($B$^$?$OBe$o$j$K(Bsizeof$B$K(B
$B?t$($5$;$F(B)$B!"A^F~$5$l$kJ8;zNs$NJ,$O(Bstrlen()$B$r8F$s$G?t$($5$;!"(B
$B7k2L$r2C$($k!#(B%d$B$,$I$l$/$i$$$NBg$-$5$r@j$a$k$+$O!"0J2<$NBg$-$5(B
$B$r1[$($k$3$H$O$J$$!#(B

((sizeof(int) * CHAR_BIT + 2) / 3 + 1)  /* +1 for '-' */


(CHAR_BIT$B$O(B<limits.h>$B$KDj5A$5$l$F$$$k!#(B)$B$?$@$7>e$N7W;;$O>/$795(B
$B$(L\2a$.$k$+$b$7$l$J$$!#(B($B>e$N%3!<%I$O(B8$B?J?tI=8=$N?t$rI=$o$9$N$K(B
$BI,MW$JJ8;z$N?t$r7W;;$9$k$b$N$G$"$k!#(B10$B?J?tI=8=$J$iI,$:F1$8$+$h(B
$B$j>.$5$$NN0h$G:Q$`!#(B)

$B=q<0J8;zNs$,$b$C$HJ#;($@$C$?$j<B9T;~$^$G$o$+$i$J$$>l9g$O!"$I$l(B
$B$/$i$$Bg$-$J%P%C%U%!$,I,MW$+M=A[$9$k$3$H$O(Bsprintf()$B$r2~$a$F<B(B
$BAu$9$k$N$HF1$8$/$i$$:$Fq$H$J$j!"$=$l$@$14V0c$$$rHH$7$d$9$/$J$k(B
($B$7$?$,$C$F4+$a$J$$(B)$B!#:G8e$N<jCJ$H$7$F;~!9Ds0F$5$l$k$N$O(B
fprintf()$B$r;H$C$FF1$8%F%-%9%H$r%S%C%H%P%1%D$d0l;~%U%!%$%k$K=q(B
$B$-9~$s$G!"(Bfprintf()$B$NLa$jCM$d%U%!%$%k$NBg$-$5$r8+$k$3$H$G$"$k(B
($B$?$@$7<ALd(B19.12$B$b;2>H$N$3$H!#=q$-9~$_%(%i!<$K$D$$$F$bCm0U$9$k(B
$B$3$H(B)$B!#(B

$B%P%C%U%!$,$=$s$J$KBg$-$/$J$$$+$b$7$l$J$$>l9g$O!"%P%C%U%!$,$"$U(B
$B$l$J$$$H$+%a%b%j$NJL$NItJ,$r>e=q$-$7$J$$$HJ]>Z$5$l$J$$8B$j!"(B
sprintf()$B$r8F$S$?$/$J$$$@$m$&!#$$$/$D$+$NI8=`F~=PNO%i%$%V%i%j(B
(GNU$B$d(B4.4BSD$B$N(B)$B$OL>A0$+$i5!G=$,$o$+$k(Bsnprintf()$B4X?t$rMQ0U$7$F(B
$B$$$k!#$3$l$O0J2<$N$h$&$K;H$&!#(B

snprintf(buf, bufsize, "You typed \"%s\"", answer);

ANSI/ISO C$B$N>-Mh$N2~D{$,$3$N5!G=$r<h$jF~$l$k$3$H$r4j$&$P$+$j$G(B
$B$"$k!#(B

References: Rationale Sec. 4.9.7.2; H&S Sec. 15.7 p. 356.

12.23:$B$J$<(Bgets()$B$r;H$&$J$HC/$b$,8@$&$N$+!#(B

A:fgets$B$H0c$C$F(Bgets$B$K$O!"$3$l$+$iFI$b$&$H$7$F$$$k%P%C%U%!$NBg$-(B
$B$5$rEA$($k$3$H$,$G$-$J$$$N$G!"%P%C%U%!$,$"$U$l$F$7$^$&$3$H$rKI(B
$B$0$3$H$,$G$-$J$$!#0lHLE*$J5,B'$H$7$F!"$$$D$b(Bfgets()$B$r;H$&!#<A(B
$BLd(B7.1$B$N!"(Bgets()$B$NBe$o$j$K(Bfgets()$B$r;H$&J}K!$r@bL@$7$?%3!<%I$r;2(B
$B9M$N$3$H!#(B

12.24:$B$J$<(Bprintf()$B$r8F$V$HJQ?t(Berrno$B$K(BENOTTY$B$,@_Dj$5$l$k$N$+!#(B

A:$BI8=`F~=PNO%Q%C%1!<%8$NB?$/$N<BAu$O(Bstdout$B$N@h$,C<Kv$N$H$-$OF0:n(B
$B$r>/$7JQ$($k!#$3$&$$$&<BAu$G$O!"=PNO@h$rH=CG$9$k$?$a$K(Bstdout$B$N(B
$B@h$,C<Kv$G$J$$$H$-$OI,$:<:GT$9$kA`:n(B($B$3$l$,(BENOTTY$B$r@_Dj$9$k(B)$B$r(B
$B9T$&!#$h$C$F=PNO$NA`:n$,40A4$K@.8y$9$k$K$b$+$+$o$i$:(Berrno
$B$NCM$O(BENOTTY$B$H$J$k!#(B($B%W%m%0%i%`$,(Berrno$B$NCf?H$rD4$Y$k$3$H$O!"%((B
$B%i!<$,Js9p$5$l$?$H$-$@$10UL#$,$"$k$3$H$KCm0U!#(B)

References: ANSI Sec. 4.1.3, Sec. 4.9.10.3; ISO Sec. 7.1.4,
Sec. 7.9.10.3; CT&P Sec. 5.4 p. 73; PCS Sec. 14 p. 254.

12.25:fgetpos/fsetpos$B$H(Bftell/fseek$B$N0c$$$O!#(Bfgetpos()$B$d(Bfsetpos()$B$O2?(B
$B$NLr$KN)$D$N$+!#(B

A:ftell()$B$H(Bfseek()$B$O%U%!%$%kFb$G$N%*%U%;%C%H(B($B0LCV(B)$B$rI=$9$N$K(Blong
int$B$r;H$&!#$7$?$,$C$F!"%*%U%;%C%H$O(B20$B2/(B(2**31-1)$B$^$G$K8BDj$5$l(B
$B$F$7$^$&!#0lJ}!"?7$7$$4X?t$G$"$k(Bfgetpos()$B$H(Bfsetpos()$B$OFCJL$J(B
typedef$B$G$"$k(Bfpos_t$B$r%*%U%;%C%H$rI=$9$N$K;H$&!#(Bfpos_t$B$rE,@Z$K(B
$BA*$Y$P%*%U%;%C%H$NBg$-$5$r9%$-$J$h$&$KA*$V$3$H$,$G$-$k!#<ALd(B
1.4$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. B1.6 p. 248; ANSI Sec. 4.9.1,
Secs. 4.9.9.1,4.9.9.3; ISO Sec. 7.9.1, Secs. 7.9.9.1,7.9.9.3;
H&S Sec. 15.5 p. 252.

12.26:$B%f!<%6!<$,@hBG$A$7$?F~NO$,!"<!$KF~NOBT$A$9$k$H$3$m$GFI$^$l$k$3(B
$B$H$,$J$$$h$&$K!"=hM}$5$l$F$$$J$$F~NO$r<N$F$k$3$H$,$G$-$k$+!#(B
fflush(stdin)$B$O8z$/$+!#(B

A:fflush()$B$O!"=PNO%9%H%j!<%`$K$7$+Dj5A$5$l$F$$$J$$!#(Bfflush$B$N(B
"flush($B2!$7N.$9(B)"$B$O!"%P%C%U%!%j%s%0$5$l$?J8;z$N(B($B<N$F$k$N$G$O$J(B
$B$/(B)$B=q$-9~$_$rC#@.$9$k$3$H$r0UL#$7$F$$$k!#FI$^$l$F$J$$F~NO$r<N(B
$B$F$k$3$H$O!"F~NO%9%H%j!<%`$r(Bfflush$B$9$k$H$$$&$3$H$HF1$80UL#$G$O(B
$B$J$$!#(B

$BI8=`F~=PNO$NF~NO%P%C%U%!$NFI$s$G$$$J$$F~NO$r<N$F$k0lHLE*$JJ}K!(B
$B$O$J$$$7!"$=$s$J$3$H$r$9$k$@$1$G$O=<J,$G$J$$!#FI$^$l$F$$$J$$J8(B
$B;z$O!"%*%Z%l!<%F%#%s%0%7%9%F%`%l%Y%k$N%P%C%U%!$K$b$?$a9~$^$l$F(B
$B$$$k2DG=@-$,$"$k!#(B\n$B$,=P$k$^$GJ8;z$rFI$s$G$O<N$F$F!"$=$l$+$i(B
curses$B$N(Bflushinp()$B$d%7%9%F%`8GM-$N5;$r;H$&$3$H$G:Q$^$9$3$H$,$G(B
$B$-$k$+$b$7$l$J$$!#<ALd(B19.1$B$H(B19.2$B$b;2>H$N$3$H!#(B

12.30:fopen$B$N%b!<%I!V(Br+$B!W$r;H$C$F%U%!%$%k$r3+$$$F!"<!$K$"$kJ8;zNs$r(B
$BFI$s$G!":G8e$K=$@5$7$?J8;zNs$r=q$-La$9$3$H$G%U%!%$%k$r99?7$7$h(B
$B$&$H$7$F$$$k!#$G$b$&$^$/$$$+$J$$!#(B

A:$B=q$/A0$K(Bfseek()$B$rI,$:8F$V$3$H!#>e=q$-$7$h$&$H$7$F$$$kJ8;zNs$N(B
$B@hF,$K%7!<%/$7$FLa$9$3$H$,I,MW$G$"$k$7!"FI$_=q$-N>J}2DG=$N!V(B+$B!W(B
$B%b!<%I$G%G!<%?$rFI$`$H$-$H=q$/$H$-$N4V$K$O(Bfseek()$B$+(Bfflush()$B$,(B
$BI,MW$G$"$k!#$b$H$b$H$"$C$?J8;z$HF1$88D?t$7$+>e=q$-$G$-$J$$$3$H!"(B
$B%F%-%9%H%b!<%I$G>e=q$-$9$k$H%U%!%$%k$,$=$NE@$G@Z$j<N$F$i$l$F$7(B
$B$^$&$+$b$7$l$J$$$3$H$rK:$l$F$O$$$1$J$$!#<ALd(B19.14$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 4.9.5.3; ISO Sec. 7.9.5.3.

12.33:$B%W%m%0%i%`$NCf$+$i(Bstdin$B$d(Bstdout$B$N@h$r%U%!%$%k$K%j%@%$%l%/%H$9(B
$B$k$N$O$I$&$9$l$P$h$$$+!#(B

A:freopen()$B$r;H$&(B($B$?$@$70J2<$N<ALd(B12.34$B$r;2>H$N$3$H(B)$B!#(B

References: ANSI Sec. 4.9.5.4; ISO Sec. 7.9.5.4; H&S Sec. 15.2.

12.34:freopen()$B$r;H$C$?8e$G!"85$N(Bstdout($B$"$k$$$O(Bstdin)$B$KLa$9$3$H$,$G(B
$B$-$k$+!#(B

A:$B$h$$J}K!$OB8:_$7$J$$!#$b$79T$C$?$jMh$?$j$7$?$$$N$G$"$l$P!":G9b(B
$B$NJ}K!$O(Bfreopen()$B$J$s$F;H$o$J$$$3$H$G$"$k!#<+J,$GL@<(E*$KDj5A(B
$B$7$?=PNO(B($B$"$k$$$OF~NO(B)$B%9%H%j!<%`JQ?t$r;H$&$3$H!#$=$&$9$l$P;W$&(B
$B$^$^$K=PNO(B($B$^$?$OF~NO(B)$B$r3d$jIU$1$F!"$7$+$b85$N(Bstdout($B$"$k$$$O(B
stdin)$B$r2u$5$J$/$F$9$`!#(B

12.38:$B%P%$%J%j%G!<%?$N%U%!%$%k$r!"$A$c$s$HFI$`$K$O$I$&$9$l$P$h$$$+!#(B
$B$H$-$I$-(B0x0a$B$H$+(Bx0d$B$H$$$C$?CM$,2u$l$F$7$^$&$N$rL\7b$9$k!#%G!<(B
$B%?$K(B0x1a$B$,4^$^$l$F$$$k$HK\Mh$h$jAa$/(BEOF$B$K=P$/$o$9$h$&$@!#(B

A:$B%P%$%J%j%G!<%?$rFI$_9~$`$H$-$K$O!"(Bfopen()$B$r8F$V:]$K!"%F%-%9(B
$B%H%U%!%$%k$NJQ49$,<B9T$5$l$J$$$h$&!"(B"rb"$B%b!<%I$r;XDj$9$k$3$H(B
$B$,I,MW$G$"$k!#F1$8$h$&$K!"%P%$%J%j%U%!%$%k$r=q$-9~$`$H$-$O!"(B
"wb"$B$r;H$o$J$1$l$P$J$i$J$$!#(B

$B%F%-%9%H$H%P%$%J%j$O%U%!%$%k$r%*!<%W%s$9$k$H$-$K6hJL$5$l$k!#(B
$B$$$C$?$s%U%!%$%k$r3+$$$?$i!"%U%!%$%k$K$I$A$i$NF~=PNO%3!<%k$r$7$F(B
$B$$$k$+$O4X78$J$$!#<ALd(B20.5$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 4.9.5.3; ISO Sec. 7.9.5.3; H&S Sec. 15.2.1
p. 348.

13$B>O(B $B%i%$%V%i%j4X?t(B

13.1:$B$I$&$9$l$P?t$rJ8;zNs$KJQ49$9$k$3$H$,$G$-$k$+(B(atoi$B$NH?BP(B)$B!#4X?t(B
itoa$B$H$$$&$N$OB8:_$9$k$N$+!#(B

A:$B$J$K$b9M$($:$K(Bsprintf()$B$r;H$(!#(B($B!V(Bsprintf$B$O$d$j$9$.$@!#<B9T;~(B
$B4V$H%3!<%INN0h$rL5BL8/$$$9$k!#!W$H$$$&@<$OL5;k$9$k$3$H!#$H$K$+(B
$B$/F0$/$s$@$+$i!#(B) $B<ALd(B7.5$B$N2rEzFb$NNc$r;2>H$N$3$H!#<ALd(B12.21$B$b(B
$B;2>H$N$3$H!#(B

$B$9$0$o$+$k$h$&$K(Bsprintf()$B$r;H$($P(B(%ld$B$d(B%f$B$r;H$C$F(B)long$B$dIbF0>.(B
$B?tE@?t$bJ8;zNs$KJQ49$9$k$3$H$,$G$-$k!#(B

References: K&R1 Sec. 3.6 p. 60; K&R2 Sec. 3.6 p. 64.

13.2:$B$J$<(Bstrncpy()$B$O%3%T!<@h$NJ8;zNs$K!"=*C<J8;z$N(B'\0'$B$rIU$1$J$$$3(B
$B$H$,$"$k$N$+!#(B

A:$B$b$H$b$H$O(Bstrncpy()$B$O!":#$H$J$C$F$O;~BeCY$l$K$J$C$F$7$^$C$?%G!<(B
$B%?9=B$!"$9$J$o$A8GDjD9$GI,$:$7$b(B\0$B$G=*$o$k$H$O8B$i$J$$(B"$BJ8;zNs(B"
$B$r07$&$?$a$K@_7W$5$l$?(B(strncpy()$B$N4XO"$9$k4qL/$J$H$3$m$O!";XDj(B
$B$5$l$?D9$5$K$J$k$^$G(B\0$B$rKd$a$k$3$H$G$"$k(B)$B!#3N$+$K$3$N(B"$BJ8;zNs(B"
$B0J30$r07$&$H$-$O>/$74VH4$1$G$"$k!#$7$P$7$PL\E*$NJ8;zNs$K!"<+J,(B
$B$G(B' \0'$B$rDI2C$7$J$1$l$P$J$i$J$$!#$3$NLdBj$O(Bstrncpy()$B$NBe$o$j$K(B
strncat()$B$r;H$&$3$H$G2sHr$9$k$3$H$,$G$-$k!#$b$7%3%T!<@h$NJ8;z(B
$BNs$,:G=i$O6u$J$i!"(Bstrncat()$B$,!"(Bstrncpy()$B$,$?$V$s$d$C$F$/$l$k$H(B
$B;W$C$F$$$?$3$H$r$d$C$F$/$l$k!#B>$K$O(Bsprintf(dest, "%.*s", n,
source)$B$,9M$($i$l$k!#(B

($BJ8;zNs$G$O$J$/(B)$BG$0U$N%P%$%H$r%3%T!<$9$k$H$-$K$O!"IaDL$O(B
memcpy()$B$N$[$&$,(Bstrncpy()$B$h$j$bE,@Z$J%k!<%A%s$G$"$k!#(B

13.5:$B$I$&$7$F(Btoupper()$B$NCf$K$OBgJ8;z$rM?$($k$HJQ$JF0$-$r$9$k$b$N$,(B
$B$"$k$N$+!#$I$&$7$F%3!<%I$K$h$C$F$O!"(Btoupper()$B$r8F$VA0$K(B
islower()$B$r8F$s$G$$$k$N$+!#(B

A:$B8E$$HG$N(Btoupper()$B$d(Btolower()$B$OJQ49$,I,MW$G$J$$0z?t(B($B?t;z$d6gFI(B
$BE@$d4{$KJ8;z$,K>$_$N(Bcase$B$K(B(toupper()$B$N>l9g$OBgJ8;z$K!"(B
tolower()$B$N>l9g$O>.J8;z$K(B)$B$J$C$F$$$k$H$-$O(B)$B$K$O@5$7$/F0$+$J$$(B
$B>l9g$,$"$C$?!#(BANSI/ISO $B5,3J$N(BC$B$G$O!"$3$l$i$N4X?t$O$9$Y$F$NJ8;z(B
$B$KBP$7$F$-$A$s$HF0$/$3$H$,J]>Z$5$l$F$$$k!#(B

References: ANSI Sec. 4.3.2; ISO Sec. 7.3.2; H&S Sec. 12.9 pp.
320-1; PCS p. 182.

13.6:$BJ8;zNs$r6uGrJ8;zNs$K$h$C$F6h@Z$i$l$?%U%#!<%k%I$KJ,$1$k$N$O$I$&(B
$B$d$l$P$h$$$+!#$3$l$r(Bmain()$B$N0z?t$N(Bargc$B$H(Bargv$B$N$h$&$KJ,$1$k$K$O(B
$B$I$&$9$l$P$h$$$+!#(B

A:$B$3$N<o$N(B"$B;z6gC10L$K@Z$k(B(tokenizing)"$B%k!<%A%s$GI8=`$G;H$($k$N$O(B
strtok()$B$@$1$G$"$k!#$?$@$7;H$&$K$O%3%D$,$$$k$7!"$d$j$?$$$3$H$r(B
$BA4It$d$C$F$/$l$k$H$O8B$i$J$$(B($BNc$($P0zMQId$NLdBj(B)$B!#(B

References: K&R2 Sec. B3 p. 250; ANSI Sec. 4.11.5.8; ISO
Sec. 7.11.5.8; H&S Sec. 13.7 pp. 333-4; PCS p. 178.

13.7:$B@55,I=8=$H$+%o%$%k%I%+!<%I$r;H$C$?Hf3S$r$9$k%3!<%I$,I,MW$H$J$C(B
$B$?!#(B

A:$B$^$:!"8EE5E*$J@55,I=8=(B(Unix$B$N(Bed$B$d(Bgrep$B$H$$$C$?%f!<%F%#%j%F%#$G(B
$B;H$o$l$F$$$k(B)$B$H%U%!%$%kL>$N%o%$%k%I%+!<%I(B($B$?$$$F$$$N%*%Z%l!<%F%#(B
$B%s%0%7%9%F%`$G;H$o$l$F$$$k(B)$B$N0c$$$,J,$+$C$F$$$k$+$I$&$+3NG'$9(B
$B$k$3$H!#(B

$B@55,I=8=$K$h$kHf3S$r$9$k%Q%C%1!<%8$O?tB?$/MQ0U$5$l$F$$$k!#$?$$(B
$B$F$$$N%Q%C%1!<%8$O0lAH$N4X?t$+$i$J$C$F$$$k!#@55,I=8=$r(B"$B%3%s%Q(B
$B%$%k(B"$B$9$k4X?t$H!"$=$N7k2L$r(B"$B<B9T(B"$B$9$k4X?t$G$"$k(B($B7k2L$HJ8;zNs$N(B
$BHf3S$r$9$k(B)$B!#(B<regex.h>$B$H$+(B<regexp.h>$B$H$$$C$?L>A0$N%X%C%@%U%!(B
$B%$%k$d!"(Bregcmp()/regex()$B$H$+(Bregcomp()/regexec()$B$H$+(B
re_comp()/re_exec()$B$H$$$C$?L>A0$N4X?t$NAH$rC5$9$3$H(B($B$3$l$i$NAH(B
$B$OFHN)$N@55,I=8=%i%$%V%i%j$KB8:_$9$k$+$b$7$l$J$$(B)$B!#<+M3$KG[I[(B
$B$7$F$$$$?M5$$N$"$k@55,I=8=%Q%C%1!<%8$H$7$F(BHenry Spencer$B$N=q$$(B
$B$?$b$N$,$"$k!#$3$l$O(Bcs.toronto.edu$B$N(Bpub/regexp.shar.Z$B$d!"$=$N(B
$BB>$N%"!<%+%$%V$+$iF~<j2DG=$G$"$k!#(BGNU$B%W%m%8%'%/%H$O(Brx$B$H$$$&L>(B
$BA0$N%Q%C%1!<%8$rMQ0U$7$F$$$k!#<ALd(B18.16$B$b;2>H$N$3$H!#(B

$B%U%!%$%kL>$N%o%$%k%I%+!<%I$K$h$k0lCW(B(globbing$B$H$b8F$P$l$k(B)$B$O%7(B
$B%9%F%`$K$h$C$F$d$j$+$?$,0[$J$k!#(BUnix$B$G$O!"%o%$%k%I%+!<%I$O%W%m(B
$B%;%9$,5/F0$5$l$kA0$K%7%'%k$K$h$C$F<+F0E*$KE83+$5$l$k$N$G!"%W%m(B
$B%0%i%`$,?4G[$7$J$1$l$P$J$i$J$$>l9g$OLGB?$K$J$$!#(BMS-DOS$B$N%3%s%Q(B
$B%$%i$NB?$/$O!"FCJL$J%*%V%8%'%/%H%U%!%$%k$rMQ0U$7$F$$$F!"%W%m%0(B
$B%i%`$H%j%s%/$9$k$H(Bargv$B$r:n$k$H$-$K%o%$%k%I%+!<%I$rE83+$7$F$/$l(B
$B$k!#$$$/$D$+$N%7%9%F%`(B(MS-DOS$B$d(BVMS$B$r4^$`(B)$B$O%o%$%k%I%+!<%I$G;X(B
$BDj$5$l$?%U%!%$%k$N0lMw$rI=<($7$?$j%U%!%$%k$r3+$$$?$j$9$k%5!<%S(B
$B%9$rMQ0U$7$F$$$k!#%3%s%Q%$%i(B/$B%j%s%+$K$D$$$F$-$?;qNA$r$h$/FI$`(B
$B$3$H!#<ALd(B19.20$B$H(B20.3$B$b;2>H$N$3$H!#(B

13.8:$BJ8;zNs$NG[Ns$r(Bqsort()$B$G%=!<%H$9$k$N$K!"(Bstrcmp()$B$rHf3SMQ$N4X?t$H(B
$B$7$F;HMQ$7$F$$$k$,!"$&$^$/$$$+$J$$!#(B

A:"$BJ8;zNs$NG[Ns(B"$B$H$O$?$V$s(B"char$B$X$N%]%$%s%?$+$i$J$kG[Ns(B"$B$r0UL#$7(B
$B$F$$$k$H;W$&!#(Bqsort$B$NHf3SMQ$N4X?t$N0z?t$O!"%=!<%H$NBP>]$X$N%](B
$B%$%s%?$G$"$k!#$3$3$G$O(Bchar$B$X$N%]%$%s%?$X$N%]%$%s%?$G$"$k$7$+$7(B
$B$J$,$i!"(Bstrcmp$B$O(Bchar$B$X$NC1$J$k%]%$%s%?$r0z?t$H$9$k!#$7$?$,$C$F(B
strcmp()$B$rD>@\;H$&$3$H$O$G$-$J$$!#0J2<$N$h$&$J4V$KF~$kHf3S$N4X(B
$B?t$r=q$/!#(B

/* $B%]%$%s%?$rDL$7$FHf3S$9$k(B */
int pstrcmp(const void *p1, const void *p2)
{
return strcmp(*(char * const *)p1, *(char * const *)p2);
}

$BHf3S$K;H$&4X?t$N0z?t$O(B"$BHFMQ$N%]%$%s%?(B"const void *$B$GI=$o$5$l$k!#(B
$B0z?t$O<B:]$N7?(B(char **)$B$K:F$SJQ49$5$l$F!"4V@\;2>H$5$l$k!#$=$N(B
$B7k2L(Bchar *$B$N0z?t$H$J$C$F(Bstrcmp()$B$KEO$5$l$k!#(B(ANSI$B0JA0$N%3%s%Q(B
$B%$%i$G;H$&$H$-$O!"%]%$%s%?0z?t$r(Bvoid *$B$G$O$J$/(Bchar *$B$H@k8@$7$F!"(B
const$B$r:o$k!#(B)

(K&R 2 Sec. 5.11 pp. 119-20$B$N5DO@$rFI$`$H$-$OMQ?4$9$k$3$H!#$=(B
$B$3$G$OI8=`%i%$%V%i%j$N(Bqsort$B$r5DO@$7$F$$$k$o$1$G$O$J$$!#(B)

References: ANSI Sec. 4.10.5.2; ISO Sec. 7.10.5.2; H&S Sec. 20.5
p. 419.

13.9:qsort()$B$r;H$C$F9=B$BN$NG[Ns$r%=!<%H$7$h$&$H$7$F$$$k!#;d$,=q$$$?(B
$BHf3S%k!<%A%s$O!"9=B$BN$X$N%]%$%s%?$r0z?t$H$7$F<h$k!#$1$l$I%3(B
$B%s%Q%$%i$O!";d$N4X?t$,(Bqsort()$B$N0z?t$H$7$F$O4V0c$C$?%G!<%?7?$@(B
$B$HJ86g$rIU$1$k!#4X?t$X$N%]%$%s%?$r$I$N$h$&$K%-%c%9%H$9$l$P7Y(B
$B9p$r>C$75n$k$3$H$,$G$-$k$N$+!#(B

A:$B7?$NJQ49$rHf3S4X?tFb$G9T$o$J$1$l$P$J$i$J$$!#Hf3S4X?t$O>e$N(B
Q12.2$B$G5DO@$7$?$h$&$K(B"$BHFMQ$N%]%$%s%?(B" (const void *)$B$r0z?t$H(B
$B$7$F<h$k$H@k8@$5$l$F$$$J$1$l$P$J$i$J$$!#%3!<%I$O0J2<$N$h$&$K$J$k(B
$B$@$m$&!#(B

int mystructcmp(const void *p1, const void *p2)
{
const struct mystruct *sp1 = p1;
const struct mystruct *sp2 = p2;
/* $B$3$l$+$i(Bsp1->whatever$B$H(Bsp2-> ...$B$rHf3S$9$k(B */

($BHFMQ$N%]%$%s%?$+$i9=B$BN(Bmystruct$B$r;X$9%]%$%s%?$X$NJQ49$,!"=i(B
$B4|2=(Bsp1 = p1 $B$H(B sp2 = p2$B$G9T$o$l$k!#(Bp1$B$H(Bp2$B$,(Bvoid$B$N%]%$%s%?$G$"(B
$B$k$+$i!"%3%s%Q%$%i$,0EL[$N$&$A$KJQ49$r9T$&!#(BANSI$B0JA0$N%3%s%Q%$(B
$B%i$r;H$&$H$-$OL@<(E*$J%-%c%9%H$H(Bchar *$B$N%]%$%s%?$r;H$&$3$H$,I,(B
$BMW$H$J$k!#<ALd(B7.7$B$b;2>H$N$3$H!#(B)

$B0lJ}!"9=B$BN$X$N%]%$%s%?$r%=!<%H$9$k$N$G$"$l$P<ALd(B13.8$B$N$h$&$K(B
$B4V@\;2>H$,I,MW$G$"$k!#(B

sp1 = *(struct mystruct **)p1 )

$B0lHL$K!"(B"$B%3%s%Q%$%i$rL[$i$;$k(B"$B$@$1$N$?$a$K%-%c%9%H$r$D$1$k$N$O(B
$B$$$$9M$($G$O$J$$!#%3%s%Q%$%i$N7Y9p$O!"$?$$$F$$2?$+$rEA$($h$&$H(B
$B$7$F$k$o$1$G!"<+J,$,$J$K$r$d$C$F$k$+$h$/M}2r$7$F$$$J$$$N$K!"L5(B
$B;k$7$?$jL[$i$;$?$j$9$k$H$R$I$$$a$K$"$&!#<ALd(B4.9$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 4.10.5.2; ISO Sec. 7.10.5.2; H&S Sec. 20.5
p. 419.

13.10:$B%j%s%/IU$-%j%9%H$r$I$&$d$C$F%=!<%H$9$l$P$h$$$+!#(B

A:$B%j%9%H$r:n$C$F$$$k4V$:$C$H%j%9%H$NMWAG$N=g$,Mp$l$J$$$h$&$K$7$F(B
$B$*$/$[$&$,(B($B$"$k$$$OLZ(B(tree)$B$r;H$&$[$&$,(B)$B!"8e$G%=!<%H$9$k$h$j$b(B
$B$d$5$7$$$3$H$b$"$k!#A^F~%=!<%H(B(insertion sort)$B$d%^!<%8%=!<%H(B
(merge sort)$B$N$h$&$J%"%k%4%j%:%`$O%j%s%/IU$-%j%9%H$H$$$C$7$g$K(B
$B;H$&$N$K8~$$$F$$$k!#I8=`$N%i%$%V%i%j4X?t$r;H$$$?$$$J$i!"%]%$%s(B
$B%?$NG[Ns$r0l;~E*$K3NJ]$7$F!"G[NsFb$N3F%]%$%s%?$r$=$l$>$l%j%9%H(B
$B$N3F%N!<%I$r;X$9$h$&$K$9$k!#(Bqsort()$B$r8F$s$G!":G8e$K%=!<%H:Q$_(B
$B$NG[Ns$K4p$E$$$F%j%9%H$N%]%$%s%?$r:F9=C[$9$k(B

References: Knuth Sec. 5.2.1 pp. 80-102, Sec. 5.2.4 pp. 159-168;
Sedgewick Sec. 8 pp. 98-100, Sec. 12 pp. 163-175.

13.11:$B%a%b%j$K<}$^$j$-$i$J$$NL$N%G!<%?$r$I$&$d$C$F%=!<%H$9$l$P$h$$(B
$B$+!#(B

A:$B!V30It%=!<%H(B(external sort)$B!W$r;H$($P$h$$!#$3$l$ONc$N(BKnuth$B$NBh(B
3$B4,$GFI$`$3$H$,$G$-$k!#4pK\E*$J35G0$O%G!<%?$r2t$K$7$F%=!<%H$7(B
$B$F(B($B0lEY$K%a%b%j$KG<$^$k$[$I$NBg$-$5$G(B)$B!"%=!<%H:Q$_$N3F2t$r0l;~(B
$BE*$K%U%!%$%k$K=q$-9~$s$G!"%U%!%$%k$r(B1$B$D$K$^$H$a$k!#%*%Z%l!<%F%#(B
$B%s%0%7%9%F%`$,HFMQ$N%=!<%H%f!<%F%#%j%F%#$rDs6!$7$F$k$+$b$7$l$J(B
$B$$!"Ds6!$5$l$F$$$?$i%W%m%0%i%`$NCf$+$i8F$S=P$7$F$_$l$P$$$$!#<A(B
$BLd(B19.27$B$H(B19.30$B$b;2>H$N$3$H!#(B

References: Knuth Sec. 5.4 pp. 247-378; Sedgewick Sec. 13 pp.
177-187.

13.12:C$B$N%W%m%0%i%`$G;~9o$rF@$k$N$O$I$&$9$l$P$h$$$+!#(B

A:$B4X?t(Btime()$B$H(Bctime()$B$+(Blocaltime()$B!"$^$?$O$3$l$i$N$9$Y$F$r;H$&(B
($B$3$l$i$N4X?t$O@N$+$iB8:_$9$k$7(BANSI$B5,3J$NCf$K$bB8:_$9$k(B)$B!#0J2<(B
$B$K4JC1$J8+K\$r:\$;$F$*$/!#(B

#include <stdio.h>
#include <time.h>

main()
{
time_t now;
time(&now);
printf("It's %.24s.\n", ctime(&now));
return 0;
}

References: K&R2 Sec. B10 pp. 255-7; ANSI Sec. 4.12; ISO
Sec. 7.12; H&S Sec. 18.

13.13:$B%i%$%V%i%j4X?t(Blocaltime()$B$O(Btime_t$B$r9=B$BN(Btm$B$KJQ49$9$k$3$H$H!"(B
ctime()$B$O(Btime_t$B$r0u:~2DG=$JJ8;zNs$KJQ49$9$k$H$$$&$3$H$OCN$C$F(B
$B$$$k!#$5$F9=B$BN(Btm$B$dJ8;zNs$+$i(Btime_t$B$X$N5UJQ49$O$I$&$d$C$F(B
$B9T$J$($P$h$$$+!#(B

A:ANSI C$B$O!"9=B$BN(Btm$B$r(Btime_t$B$KJQ49$9$k%i%$%V%i%j4X?t(Bmktime()$B$r(B
$BMQ0U$7$F$$$k!#(B

$BJ8;zNs$r(Btime_t$B$KJQ49$9$k$N$O!"$b$&>/$79|$,@^$l$k!#$J$<$J$i2r@O(B
$B$7$J$1$l$P$J$i$J$$F|IU$d;~4V$N=q<0$N<oN`$,9-HO0O$K$o$?$k$+$i$G(B
$B$"$k!#(Bstrptime()$B$H$$$&4X?t$rMQ0U$7$F$$$k%7%9%F%`$b$"$k!#$3$l$O(B
$B4pK\E*$K$O(Bstrftime()$B$N5U$NF0:n$r$9$k!#B>$K?M5$$N$"$k%k!<%A%s$H(B
$B$7$F$O(Bpartime(RCS$B$N%Q%C%1!<%8$H$H$b$KG[I[$5$l$F$$$k(B)$B$d(B
getdate() ($B$=$NB>$N$$$/$D$+$N4X?t$H6&$K(BC$B%K%e!<%9$N%Q%C%1!<%8$G(B
$BG[I[$5$l$F$$$k(B)$B$,$"$k!#<ALd(B18.16$B$r;2>H$N$3$H!#(B

References: K&R2 Sec. B10 p. 256; ANSI Sec. 4.12.2.3; ISO
Sec. 7.12.2.3; H&S Sec. 18.4 pp. 401-2.

13.14:$B$"$kF|$+$i(BN$BF|8e$,2?7n2?F|$+$r$I$&$d$C$F7W;;$9$k$N$+!#(B2$B$D$NF|IU(B
$B$N:9$O$I$&$d$C$F7W;;$9$k$N$+!#(B

A:ANSI/ISO$B5,3J$N(BC$B8@8l$O!"(Bmktime()$B$H(Bdifftime()$B$H$$$&4X?t$r!">e$N(B
$BMW5a$KEz$($k$?$a$KMQ0U$7$F$$$k!#(Bmktime()$B$O@55,2=$5$l$F$$$J$$F|(B
$BIU$r0z?t$K<h$k!#%G!<%?$r@_Dj:Q$_$N9=B$BN(Btm$B$rMQ0U$7$F!"(Btm_field
$B%U%#!<%k%I$KF|IU$rB-$7$?$j0z$$$?$j$7$F$+$i(Bmktime()$B$r8F$s$GG/!&(B
$B7n!&F|$N%U%#!<%k%I$r@55,2=(B($B$D$$$G$K(Btime_t$B7?$NCM$KJQ49(B)$B$9$k$3$H(B
$B$OFq$7$/$J$$!#(Bdifftime()$B$OFs$D$N(Btime_t$B$NCM$N:9$rIC$G7W;;$9$k!#(B
$B0z$-;;$K;H$&F|IU$N(Btime_t$B$r7W;;$9$k$N$K(Bmktime()$B$r;H$&$3$H$,$G$-(B
$B$k!#(B

$B$3$l$i$N2r$O(Btime_t$B$GI=8=$G$-$k$KF|IU$,<}$^$k$H$-$K$@$1@5$7$/F0(B
$B$/$3$H$rJ]>Z$5$l$F$$$k!#(Btm_mday$B%U%#!<%k%I$O(Bint$B$G!"(B32,736$B$h$jBg(B
$B$-$JF|IU$N%*%U%;%C%H$O%*!<%P!<%U%m!<$9$k2DG=@-$,$"$k!#2F;~4V$H(B
$B$N@ZBX;~$K$O!"$=$NEZCO$N(B1$BF|$O(B24$B;~4V$G$O$J$$$3$H$K$bCm0U$9$k$3(B
$B$H(B($B$7$?$,$C$F(B86400$B$G3d$j@Z$l$k$H;W$$9~$^$J$$$3$H(B)$B!#(B

$BN>J}$N<ALd$NJL$N<h$jAH$_$+$?$H$7$F$O(B"$B%f%j%"%9F|(B(Julian day)"$B?t(B
$B$r;H$&J}K!$,$"$k!#%f%j%"%9F|%k!<%A%s$N<BAu$O(BSimtel/Oakland$B%"!<(B
$B%+%$%V(B($B<ALd(B18.16$B;2>H(B)$B$+$i(BJULCAL10.ZIP$B$H$$$&L>A0$GF~<j2DG=$G$"(B
$B$k!#;29MJ88%$K5s$2$?(B"Data conversions"$B$H$$$&5-;v$+$i$bF@$k$3$H(B
$B$,$G$-$k!#(B

$B<ALd(B13.13, 20.31, 20.32$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. B10 p. 256; ANSI Secs. 4.12.2.2,4.12.2.3;
ISO Secs. 7.12.2.2,7.12.2.3; H&S Secs. 18.4,18.5 pp. 401-2;
David Burki, "Date Conversions".

13.15:$BMp?tH/@84o$,M_$7$$!#(B

A:$BI8=`$N(BC$B%i%$%V%i%j$K(Brand()$B$H$$$&$N$,B8:_$9$k!#7/$,;H$C$F$$$k%7(B
$B%9%F%`$N(Brand()$B$N<BAu$O40`z$G$J$$$+$b$7$l$J$$$,!"$h$j$h$$4X?t$r(B
$B=q$/$N$OMF0W$G$J$$$3$H$b;v<B$G$"$k!#(B

$B<+J,$GMp?tH/@84o$r<BAu$9$k$O$a$K4Y$C$?$H$7$F$b?tB?$/$NJ88%$,=P(B
$B$^$o$C$F$$$k!#(BReferences$B$r;2>H$N$3$H!#%M%C%H$N>e$K$b$?$/$5$s$N(B
$B%Q%C%1!<%8$,N.$l$F$$$k!#(Br250$B$H$+(BRANLIB$B$H$+(BFSULTRA$B$H$$$C$?L>A0(B
$B$N%Q%C%1!<%8$rC5$9$3$H(B($B<ALd(B18.16$B;2>H(B)$B!#(B

References: K&R2 Sec. 2.7 p. 46, Sec. 7.8.7 p. 168; ANSI
Sec. 4.10.2.1; ISO Sec. 7.10.2.1; H&S Sec. 17.7 p. 393; PCS
Sec. 11 p. 172; Knuth Vol. 2 Chap. 3 pp. 1-177; Park and Miller,
"Random Number Generators: Good Ones are hard to Find".

13.16:$B$"$kHO0O$N@0?t$+$i$J$kMp?t$O$I$&$d$C$?$i@8@.$9$k$3$H$,$G$-$k$+!#(B

A:$B$9$0$K;W$$IU$/!"(B

rand() % N/* $B%?%3(B */

($B$3$l$O(B0$B$+$i(BN-1$B$^$G$N?t$rJV$=$&$H$9$k(B)$B$OMp?t$N<A$,Dc$$!#$J$<$J(B
$B$iMp?tH/@84o$NB?$/$G2<0L$N%S%C%H$OHa$7$$$[$I%i%s%@%`$G$J$$(B($B<A(B
$BLd(B13.18$B$r;2>H$N$3$H(B)$B!#$h$j$h$$J}K!$O0J2<$N$h$&$J$b$N$G$"$k!#(B

(int)((double)rand() / ((double)RAND_MAX + 1) * N)

$BIbF0>.?t$r;H$&$3$H$,5$$K$J$k$N$J$i!"0J2<$NJ}K!$r;n$;$P$h$$!#(B

rand() / (RAND_MAX / N + 1)

$B$I$A$i$NJ}K!$b(BRAND_MAX(ANSI$B$O(B<stdlib.c>$B$GDj5A$7$F$$$k(B)$B$NCM$rCN$C(B
$B$F$$$k$3$H$,EvA3I,MW$G$"$k!#$^$?$I$A$i$b(BN$B$,(BRAND_MAX$B$K$/$i$Y$F(B
$B==J,>.$5$$$3$H$r2>Dj$7$F$$$k!#(B

($B$H$3$m$G!"(BRAND_MAX$B$O(BC$B%i%$%V%i%j$N(Brand()$B4X?t$,JV$9CM$NHO0O$r(B
$BI=$o$9Dj?t$G$"$k!#(BRAND_MAX$B$rB>$NCM$KJQ99$9$k$3$H$O$G$-$J$$$7!"(B
rand()$B$KJL$NHO0O$N?t$rJV$9$h$&$K;XDj$9$k$3$H$b$G$-$J$$!#(B)

0$B$+$i(B1$B$N4V$N>.?t$rJV$9Mp?tH/@84o$r85$K$9$k$J$i!"C1$K$=$NMp?tH/(B
$B@84o$N=PNO$K(BN$B$r3]$1$k$H(B0$B$+$i(BN-1$B$NHO0O$NMp?tH/@84o$,F@$i$l$k!#(B

References: K&R2 Sec. 7.8.7 p. 168; PCS Sec. 11 p. 172.

13.17:$B;d$N%W%m%0%i%`$rAv$i$;$k$?$S!"$$$D$b4X?t(Brand()$B$+$iF1$8Mp?tNs$,(B
$BJV$C$F$/$k!#(B

A:srand()$B$r;H$C$F!"5<;wMp?tH/@84o$KK\Ev$K%i%s%@%`$J=i4|CM$rM?$((B
$B$l$P$h$$!#$h$/$"$kMp?t$N<o$O!"%f!<%6!<$,%-!<$r2!$7$F$+$i$N7P2a(B
$B;~4V$d;~9o$G$"$k(B($B$?$@$7%-!<$,2!$5$l$?;~4V$H$$$&$N$O0\?"@-$N9b(B
$B$$J}K!$G$O5a$a$K$/$$!#<ALd(B19.37$B$r;2>H$N$3$H(B)$B!#(B($B%W%m%0%i%`Cf$G(B
srand()$B$r(B2$B2s0J>e8F$s$GLr$KN)$D$3$H$OLGB?$K$J$$!#(B"$BK\Ev$K%i%s%@(B
$B%`$J(B"$B?t$rF@$h$&$H;W$C$F!"(Brand()$B$r8F$VA0$KKh2s(Bsrand()$B$r8F$V$h$&(B
$B$J??;w$O$<$C$?$$$K$7$F$O$$$1$J$$!#(B)

References: K&R2 Sec. 7.8.7 p. 168; ANSI Sec. 4.10.2.2; ISO
Sec. 7.10.2.2; H&S Sec. 17.7 p. 393.

13.18:$B??56CM$+$i$J$kMp?t$,M_$7$$$N$G(Brand() % 2$B$r;H$C$?$H$3$m!"7k2L$O(B
0$B$H(B1$B$,8r8_$K8=$l$k$@$1$@$C$?!#(B

A:$B=PMh$N0-$$5<;wMp?tH/@84o$G$O(B($B$$$/$D$+$N%7%9%F%`$K>h$C$F$$$k$b(B
$B$N$OIT9,$J$3$H$K$=$&$G$"$k(B)$B2<0L$N%S%C%H$O$"$^$j%i%s%@%`$G$O$J(B
$B$$!#>e0L$N%S%C%H$r;H$&$3$H!#<ALd(B13.16$B$r;2>H$N$3$H!#(B

13.20:$B@55,J,I[$D$^$j%,%&%9J,I[$NMp?t$r@8@.$9$k$N$O$I$&$9$l$P$h$$$+!#(B

A:$B0J2<$N(BBox$B$H(BMuller$B$NJ}K!$O(BKnuth$B$4?dA&$G$"$k!#(B

#include <stdlib.h>
#include <math.h>

double gaussrand()
{
static double V1, V2, S;
static int phase = 0;
double X;

if(phase == 0) {
do {
double U1 = (double)rand() / RAND_MAX;
double U2 = (double)rand() / RAND_MAX;

V1 = 2 * U1 - 1;
V2 = 2 * U2 - 1;
S = V1 * V1 + V2 * V2;
} while(S >= 1 || S == 0);

X = V1 * sqrt(-2 * log(S) / S);
} else
X = V2 * sqrt(-2 * log(S) / S);

phase = 1 - phase;

return X;
}

$B$3$NB>$NJ}K!$K$D$$$F$O!"$3$N(BFAQ$B$N3HD%HG(B($B<ALd(B20.40$B;2>H(B)$B$r;2>H$N(B
$B$3$H!#(B

References: Knuth Sec. 3.4.1 p. 117; Box and Muller, "A Note on
the Generation of Random Normal Deviates"; Press et al.,
_Numerical Recipes in C_ Sec. 7.2 pp. 288-290.

13.24:$B8E$$%W%m%0%i%`$r0\?"$7$h$&$H$7$F$$$k!#$J$<!VL$Dj5A$N30It%7%s%\(B
$B%k!W$H$$$&%(%i!<$,=P$k$N$+!#(B

A:$B$3$l$+$i(B($B:8B&$K(B)$B5s$2$k%k!<%A%s$O$=$l$>$l;~BeCY$l$G$"$k!#Be$o$j(B
$B$K1&B&$N%k!<%A%s$r;H$(!#(B

index?strchr$B$r;H$(!#(B
rindex?strrchr$B$r;H$(!#(B
bcopy?1$BHVL\$N0z?t$H(B2$BHVL\$N0z?t$rF~$lBX$($F(B
memmove$B$r;H$((B($B<ALd(B11.25$B$b;2>H$N$3$H(B)$B!#(B
bcmp?memcmp$B$r;H$(!#(B
bzero?2$BHVL\$N0z?t$r(B0$B$K$7$F(Bmemset$B$r;H$(!#(B

$B5U$K!"1&B&$NNs$N4X?t$,:\$C$F$$$J$$8E$$%7%9%F%`$r;H$C$F$$$k$N$J(B
$B$i!"1&B&$N4X?t$r:8B&$N4X?t$r;H$C$F<BAu!"$"$k$$$OBeMQ$9$k$3$H$,(B
$B$G$-$k$+$b$7$l$J$$!#(B

References: PCS Sec. 11.

13.25:$B!V%i%$%V%i%j$N%k!<%A%s$,L$Dj5A!W$H$$$&%(%i!<$,=P$?$^$^$G$"$k!#(B
$B@5$7$$%X%C%@%U%!%$%k$r$9$Y$F(B#include$B$7$?$N$K!#(B

A:$B0lHL$K!"%X%C%@%U%!%$%k$O%i%$%V%i%j4X?t$N@k8@$rM?$($k$@$1$G!"(B
$B%i%$%V%i%j4X?t$=$N$b$N$rM?$($k$o$1$G$O$J$$!#$$$/$D$+$N>l9g(B
($B$H$/$K4X?t$,I8=`$G$J$$>l9g(B)$B!"%W%m%0%i%`$r%j%s%/$9$k$H$-$K(B
$B@5$7$$%i%$%V%i%j$,8+$D$+$k$h$&$K!"%Q%9$rL@5-$7$J$1$l$P$J$i$J$$(B
($B%X%C%@%U%!%$%k$r(B#include$B$9$k$@$1$G$O$=$s$J$3$H$^$G$d$C$F$/$l$J$$(B)$B!#(B
$B<ALd(B11.30, 13.26, 14.3$B$r;2>H$N$3$H!#(B

13.26:$B$=$l$G$b!V%i%$%V%i%j$N%k!<%A%s$,L$Dj5A!W$H$$$&%(%i!<$,=P$?$^$^(B
$B$G$"$k!#:#EY$O%j%s%/$9$k$H$-$K%i%$%V%i%j$rL@<(E*$K;XDj$7$?$N(B
$B$K!#(B

A:$BB?$/$N%j%s%+$O!";XDj$7$?%*%V%8%'%/%H%U%!%$%k$H%i%$%V%i%j$N(B
$B%j%9%H$r0l2s$N%Q%9$G:n$j=P$7!"%i%$%V%i%j$+$i$=$N;~E@$GL$Dj5A(B
$B$N4X?t$r4^$`%b%8%e!<%k$@$1$r<h$j=P$9!#$@$+$i%*%V%8%'%/%H%U%!%$(B
$B%k$H%i%$%V%i%j$N%3%^%s%I%i%$%s$G$N=g=x$O=EMW$G$"$k(B($B%*%V%8%'(B
$B%/%H%U%!%$%k4V$N=g=x$bBg;v$G$"$k(B)$B!#IaDL$O%i%$%V%i%j$r:G8e$K(B
$BC5$7$F$b$i$$$?$$!#(B($BNc$($P!"(BUNIX$B$G$O(B-l$B%9%$%C%A$NN`$O$9$Y$F%3%^%s(B
$B%I%i%$%s$N:G8e$N$[$&$KIU$1$k$3$H!#(B)$B<ALd(B13.28$B$b;2>H$N$3$H!#(B

13.28:$B%j%s%+$,(B_end$B$,L$Dj5A$@$HJ86g$r$D$1$F$/$k$N$O$I$&$$$&$H$-$+!#(B

A:$B$3$N%a%C%;!<%8$O!"8E$$(BUnix$B$N%j%s%+$NJQ$J$H$3$m$G$"$k!#(B_end$B$,(B
$BL$Dj5A$G$"$k$H$$$&%(%i!<$,=P$k$N$O!"B>$K$bL$Dj5A$N$b$N$,$"$k$H(B
$B$-$@$1$G$"$k!#$=$NB>$NItJ,$r=$@5$9$k!#$=$&$9$l$P(B_end$B$N%(%i!<$O(B
$B>C$($k!#(B($B<ALd(B13.25, 13.26$B$b;2>H$N$3$H!#(B)

14$B>O(B $BIbF0>.?tE@(B

14.1:$BIbF0>.?tE@$NJQ?t$r!"Nc$($P(B3.1$B$K@_Dj$9$k$H!"$I$&$7$F(Bprintf()$B$O(B
3.0999999$B$H=PNO$9$k$N$+!#(B

A:$B$?$$$F$$$N%3%s%T%e!<%?!<$OIbF0>.?tE@?t$K!"@0?t$K$HF1$8$h$&$K!"(B
2$B?J?t$rMQ$$$F$$$k!#(B2$B?J?t$N(B1/1010($B$3$l$O(B10$B?J?t$G$O(B1/10)$B$OL58B=[(B
$B4D>.?t$H$J$k!#(B2$B?JI=8=$O(B0.0001100110011...$B$H$J$k!#%3%s%Q%$%i(B
$B$N(B2$B?J(B/10$B?JJQ49%k!<%A%s(B($B$?$H$($P(Bprintf()$B$G;H$o$l$F$$$k$b$N(B)$B$,$I(B
$B$l$/$i$$Cm0U?<$/:n$i$l$F$$$k$+$K$h$C$F!"(B2$B?J?t$G$O@53N$KI=8=$G(B
$B$-$J$$?t$,(B($B$H$/$K@:EY$NDc$$IbF0>.?t$,(B)$BBeF~$5$l$?$jFI$_9~$^$l$F=P(B
$BNO$5$l$k$H(B($B$9$J$o$A!"(B2$B?J$+$i(B10$B?J$KJQ49$7!"(B10$B?J$+$i(B2$B?J$KJQ49$7(B
$B$J$*$9$H(B)$B?)$$0c$$$,@8$8$k$+$b$7$l$J$$!#<ALd(B14.6$B$b;2>H$N$3$H!#(B

14.2:$BJ?J}:,$r5a$a$h$&$H$7$F$$$k!#$1$l$I!"$H$s$G$b$J$$?t;z$,JV$C$F$/(B
$B$k!#(B

A:$B$^$:(B<math.h>$B$r(B#include$B$7$?$3$H$r3NG'$7$F!"<!$K(Bdouble$B$rJV$94X?t(B
$B$r@5$7$/@k8@$7$?$3$H$r3NG'$9$k!#(B($B$=$NB>$N%i%$%V%i%j%k!<%A%s(B
$B$GCm0U$7$J$1$l$P$$$1$J$$$N$O!"(Batof()$B$G$"$k!#$3$l$O(B<stdlib.h>$B$G(B
$B@k8@$5$l$F$$$k!#(B) $B2<$N<ALd(B14.3$B$b;2>H$N$3$H!#(B

References: CT&P Sec. 4.5 pp. 65-6.

14.3:$B$A$g$C$H$7$?;03Q4X?t$N7W;;$,$7$?$/$F(B<math.h>$B$r(B#include$B$7$?$1$l(B
$B$I!V(B_sin$BL$Dj5A!W$H$$$&%3%s%Q%$%k%(%i!<$,JV$C$F$-$?!#(B

A:$B$^$:$O?t3X4X?t$N%i%$%V%i%j$,K\Ev$K%j%s%/$5$l$F$$$k$3$H$r3NG'$9(B
$B$k$3$H!#$?$H$($P(BUnix$B$G$O%3%s%Q%$%k$"$k$$$O%j%s%/$r$9$k;~$K!"%3(B
$B%^%s%I$N0lHV:G8e$K(B-lm$B%*%W%7%g%s$r$D$1$kI,MW$,$"$k!#<ALd(B13.25$B$H(B
13.26$B$b;2>H$N$3$H!#(B

14.4:$BIbF0>.?tE@$N7W;;$N7k2L$,JQ$G!"$7$+$b%^%7%s$K$h$C$F0c$C$?Ez$,JV$C(B
$B$F$/$k!#(B

A:$B$^$:$O>e$N<ALd(B14.2$B$r;2>H$9$k$3$H!#(B

$BLdBj$,$=$s$J$KC1=c$G$J$$$H$-$O!"%G%8%?%k%3%s%T%e!<%?$,;H$C$F$$(B
$B$kIbF0>.?t$N%U%)!<%^%C%H$O!"<B?t$N1i;;$N$h$/$G$-$?%7%_%e%l!<%7%g(B
$B%s$rM?$($k$b$N$G$"$C$F!"7h$7$F@53N$J%7%_%e%l!<%7%g%s$rM?$($k$b(B
$B$N$G$O$J$$$3$H$r$*K:$l$J$/!#7eMn$A$d!"@:EY$,=y!9$K<:$o$l$F$$$/(B
$B$3$H$d!"$=$NB>$NIT9gM}$J$H$3$m$,LdBj$K$J$k$3$H$bB?$$!#(B

$BIbF0>.?t$N7k2L$,@53N$J$s$F9M$($J$$$3$H!#$H$/$K!"IbF0>.?tE@?t$,(B
$BHf3S$K;H$($k$J$s$F9M$($J$$$3$H(B($B$$$s$A$-$J(B"$B8m:9Dj?t(B(fuzz
factor)"$B$r;H$&$3$H$b$M!#<ALd(B14.5$B;2>H(B)$B!#(B

$B$3$l$i$O(BC$B8@8l$@$1$G$J$/B>$N%W%m%0%i%`8@8l$G$bLdBj$H$J$k$3$H$G(B
$B$"$k!#IbF0>.?tE@$N<BAu$NB?>/$NItJ,$O!"DL>o!V%W%m%;%C%5$,$d$k$3(B
$B$H$O$J$s$G$b$"$j!W$KDj5A$5$l$F$$$k!#$=$&$G$J$1$l$P(B"$B@5$7$$(B"$BIbF0(B
$B>.?tE@$N%b%G%k$r;}$?$J$$%^%7%s$G$O%(%_%e%l!<%7%g%s$r$9$k$7$+$J(B
$B$/!"$=$s$J$3$H$K$J$l$P%3!<%I$N%5%$%:$H=hM}B.EY$,5>@7$K$J$C$F;H(B
$B$$J*$K$J$i$J$$!#(B

$B$3$N5-;v$G$O!"IbF0>.?tE@$r07$&:]$NMn$H$77j$dH4$1F;$r$$$A$$$A5s(B
$B$2$k$3$H$O$G$-$J$$!#$h$/$G$-$?%W%m%0%i%_%s%0$N652J=q$O!"4pACE*(B
$B$J;vJA$r65$($F$/$l$k!#0J2<$N;29MJ88%$b;2>H$N$3$H!#(B

References: Kernighan and Plauger, _The Elements of Programming
Style_ Sec. 6 pp. 115-8; Knuth, Volume 2 chapter 4; David
Goldberg, "What Every Computer Scientist Should Know about
Floating-Point Arithmetic".

14.5:2$B$D$NIbF0>.?tE@$NCM$,(B"$B==J,6a$$(B"$B$3$H$rH=Dj$9$k$h$$J}K!$O!#(B

A:$BIbF0>.?tE@$NCM$N@dBPE*$J@:EY$O!"IbF0>.?tE@$NDj5A$K$h$j!"$=$NBg(B
$B$-$5$K$h$C$FJQ2=$9$k$N$G!"(B2$B$D$NIbF0>.?tE@$NCM$rHf3S$9$k:G>e$N(B
$BJ}K!$O@:EY$N$7$-$$CM$r;H$&$3$H$G$"$k!#@:EY$N$7$-$$CM$O!"Hf3S$7(B
$B$"$&?t$NBg$-$5$KHfNc$5$;$k!#(B

 double a, b;
...
if(a == b)/* $B4V0c$$(B */

$B$G$O$J$/!"0J2<$N%3!<%I$r(B

#include <math.h>

if(fabs(a - b) <= epsilon * a)

$BE,@Z$KA*$s$@(Bdegree of closeness$B$N(Bepsilon$B$H6&$K;H$&(B(a$B$,(B0$B$G$J$$(B
$B8B$j(B)$B!#(B

References: Knuth Sec. 4.2.2 pp. 217-8.

14.6:$B?t$r4]$a$k$K$O$I$&$9$l$P$h$$$+!#(B

A:$B0lHVC1=c$GMF0W$J$N$O0J2<$N$h$&$J%3!<%I$r=q$/$3$H$G$"$k!#(B

(int)(x + 0.5)

$B$7$+$7$3$NJ}K!$OIi$N?t$KBP$7$F$O$&$^$/$$$+$J$$(B($BIi$N?t$K$O(B
(int)(x < 0 ? x - 0.5 : x + 0.5)$B$N$h$&$J<0$r;H$($P$h$$(B)$B!#(B

14.7:$B$J$<(BC$B$K!"$Y$->h$,AH$_9~$_4X?t$GMQ0U$5$l$F$$$J$$$N$+!#(B

A:$B$Y$->h$rAH$_9~$_$NL?Na$H$7$F;}$C$F$$$k%W%m%;%C%5$,>/$J$$$+$i$G(B
$B$"$k!#(BC$B$K$O(Bpow()$B$,MQ0U$5$l!"(B<math.h>$B$G@k8@$5$l$F$$$k!#$?$@$7>.(B
$B$5$J@0?t$,BP>]$J$i!"$?$$$F$$$O<+J,$G3]$1;;$G=q$$$?$[$&$,$h$$!#(B

References: ANSI Sec. 4.5.5.1; ISO Sec. 7.5.5.1; H&S Sec. 17.6
p. 393.

14.8:$B;d$,;H$C$F$k%^%7%s$N(B<math.h>$B$+$i$"$i$+$8$aDj5A$5$l$F$$$k$O$:$N(B
$BDj?t(BM_PI$B$,O3$l$F$$$k$h$&$@!#(B

A:$B$3$NDj?t$O(B($B$3$l$O&P$NCM$r!"%^%7%s$N@:EY0lGU$^$G@53N$K!"I=$o$7(B
$B$F$$$k$3$H$K$J$C$F$$$k(B)$BI8=`$G$O$J$$!#&P$,I,MW$J$i$P!"<+J,$G(B
#define$B$9$k$3$H!#$"$k$$$O(B4*atan(1.0)$B$G7W;;$9$k!#(B

References: PCS Sec. 13 p. 237.

14.9:IEEE$B$N(BNan$B$H$+!"$=$NB>$NFCJL$JCM$+$I$&$+$N%F%9%H$O$I$&$d$l$P$h$$(B
$B$+!#(B

A:IEEE$B$NIbF0>.?tE@?t$r9bIJ<A$K<BAu$7$F$$$k%7%9%F%`$NB?$/$O!"$3$l(B
$B$i$NCM$N%F%9%H$r4J7i$K9T$&5!G=$r(B($BNc$($P$"$i$+$8$aDj5A$7$?Dj?t(B
$B$d(Bisnan()$B%^%/%m$r(B<math.h>$B$^$?$O(B<ieee.h>$B$+(B<nan.h>$B$K(B)$BMQ0U$7$F$$(B
$B$k!#>e$N$h$&$J%F%9%H$NI8=`2=$N:n6H$,B3$1$i$l$F$$$k!#(BNan$B$+$I$&(B
$B$+$NNO$:$/$@$1$l$I!"$?$$$F$$$O$&$^$/$$$/%F%9%HJ}K!$r0J2<$NNc$G(B
$B<($9!#(B

#define isnan(x) ((x) != (x))

$B$1$l$I(BIEEE$B%U%)!<%^%C%H$rCN$i$J$$%3%s%Q%$%i$O!"$3$N%F%9%H$r:GE,(B
$B2=$N7k2L!":o=|$9$k$+$b$7$l$J$$!#(B

$B$=$NB>$NJ}K!$H$7$F$O!"LdBj$K$7$F$$$kCM$r(Bsprintf()$B$G@07A$9$k$3(B
$B$H$,9M$($i$l$k!#B?$/$N%7%9%F%`$G(Bsprintf()$B$O(B"NaN"$B$H$+(B"Inf"$B$H$$$C(B
$B$?J8;zNs$r@8@.$9$k$N$G!":$$C$?$H$-$K$OLr$KN)$D!#(B

$B<ALd(B19.39$B$b;2>H$N$3$H!#(B

14.11:C$B$GJ#AG?t$r<BAu$9$k$h$$J}K!$O!#(B

$B4JC1$J$N$O!"C1=c$J9=B$BN$H$=$N9=B$BN$rA`:n$9$k;;=Q4X?t$r$$$/$D(B
$B$+MQ0U$9$k$3$H$G$"$k!#<ALd(B2.7, 2.10, 14.12$B$r;2>H$N$3$H!#(B

14.12:$B0J2<$N;E;v$r$9$k%3!<%I$rC5$7$F$$$k!#(B
$B9bB.%U!<%j%(JQ49(B(FFT's)
$B9TNs1i;;(B($B>h;;!"5U9TNs$J$I(B)
$BJ#AG?t1i;;(B

A:Ajay Shah$B$,%U%j!<$G<j$KF~$k;;=Q%=%U%H%&%(%"$NL\O?$r4IM}$7$F$$(B
$B$k!#$3$l$ODj4|E*$KEj9F$5$l$F$$$k$7!"$3$N(BFAQ$B%j%9%H$,F~<j$G$-$k(B
$B$N$HF1$8>l=j$KJ]B8$5$l$F$$$k(B($B<ALd(B20.40$B;2>H(B)$B!#<ALd(B
18.13,18.15c,18.16$B$b;2>H$N$3$H!#(B

14.13:Turbo C$B$G%W%m%0%i%`$r<B9T$9$k$H!VIbF0>.?tE@%U%)!<%^%C%H$,%j%s(B
$B%/$5$l$F$$$J$$!W$H$$$C$F%/%i%C%7%e$9$k$N$G:$$C$F$$$k!#(B

A:$B>.5,LO%^%7%sMQ$N%3%s%Q%$%i$NCf$K$O!"(BBorland$B<R$N(BC(Dennis
Ritchie$B$N%*%j%8%J%k$N(BPDP-11$BMQ$N%3%s%Q%$%i$b(B)$B$b4^$a$F!"I,MW$,$J(B
$B$5$=$&$K$_$($k$H$-$OIbF0>.?tE@?t$X$NBP1~$r<B9T$7$J$$$h$&$K$G$-(B
$B$F$$$k$b$N$,$"$k!#FC$KIbF0>.?tE@?t$KBP1~$7$J$$(Bprintf()$B$d(B
scanf()$B$O(B%e$B!"(B%f$B!"(B%g$B$r07$&%3!<%I$r>JN,$9$k$3$H$G%a%b%j$r@aLs$7(B
$B$F$$$k!#(BBorland$B$N!"%W%m%0%i%`$,IbF0>.?tE@?t$r;H$C$F$$$k$+$I$&(B
$B$+$rH=Dj$9$k5,B'$O!"$?$^$?$^IT==J,$J$h$&$G$"$k!#$=$s$J$H$-$O%W(B
$B%m%0%i%^$OIbF0>.?tE@?t$KBP1~$7$?%3!<%I$r%m!<%I$5$;$k$?$a!"L@<((B
$BE*$KIbF0>.?t%i%$%V%i%j%k!<%A%s(B($B$?$H$($P(Bsqrt()$B!#$J$s$G$b$$$$(B)$B$r(B
$B8F$P$J$1$l$P$J$i$J$$(B($B>\:Y$O(Bcomp.os.msdos.programmer FAQ$B$r;2>H(B
$B$N$3$H(B)

($BLuCm(B:Turbo C$B$G$O%=!<%9%U%!%$%kFb$K(Bextern void _
floatconvert(); #pragma extref _floatconvert$B$HL@<(E*$K=q$/$3$H(B
$B$G!"$3$N%(%i!<$r2sHr$9$k$3$H$,$G$-$k!#(B)

15$B>O(B $B2DJQ8D?t<B0z?t%j%9%H(B

15.1:printf()$B$r8F$VA0$KI,$:(B<stdio.h>$B$rI,$:(B#include$B$9$k$h$&$K$H8@$o(B
$B$l$?!#$J$<(B?

A:printf()$B$N@5$7$$%W%m%H%?%$%W$,%9%3!<%W$KF~$k$h$&$K$9(B
$B$k$?$a$K$G$"$k!#(B

$B%3%s%Q%$%i$O2DJQ8D$N<B0z?t%j%9%H$r<h$k4X?t$K$OJL$N8F$S=P$9;EAH(B
$B$_$r;H$C$F$$$k$+$b$7$l$J$$!#(B($B$=$&$9$k$N$O8GDjD9$N<B0z?t%j%9%H(B
$B$N4X?t$G;H$C$F$$$k$N$h$j8zN($N0-$$8F$S=P$7$+$?$K$J$C$F$$$k$+$i(B
$B$+$b$7$l$J$$!#(B) $B$h$C$F%W%m%H%?%$%W$O(B($B>JN,5-9f!V(B...$B!W$r;H$C$F<B(B
$B0z?t%j%9%H$,2DJQ8D?t$G$"$k$3$H$r<($9$3$H$G(B)$B!"2DJQ8D?t<B0z?t%j(B
$B%9%H$r;H$&$H$-$O$$$D$b2DJQ8D?t0z?tMQ$N8F$S=P$9;EAH$_$r;H$&I,MW(B
$B$,$"$k$H%3%s%Q%$%i$KJ,$+$k$h$&$K!"%9%3!<%W$KF~$k$h$&$K$7$J$1$l(B
$B$P$J$i$J$$!#(B

References: ANSI Sec. 3.3.2.2, Sec. 4.1.6; ISO Sec. 6.3.2.2,
Sec. 7.1.7; Rationale Sec. 3.3.2.2, Sec. 4.1.6; H&S Sec. 9.2.4
pp. 268-9, Sec. 9.6 pp. 275-6.

15.2:$B$I$&$7$F(B%f$B$r(Bprintf()$B$N(Bfloat$B$NJQ?t$K$b(Bdouble$B$NJQ?t$K$b;H$&$3$H(B
$B$,$G$-$k$N$+!#$3$N(B2$B$D$OJL$N%G!<%?7?$G$O$J$$$N$+!#(B

A:$B2DJQ8D?t<B0z?t%j%9%H$N2DJQ8D?t$NItJ,$K$O!V>JN,;~$N0z?t$N3J>e$2(B
(default argument promotions)$B!W$,E,MQ$5$l$k!#(Bchar$B$H(Bshort int$B$O(B
int$B$K!"(Bfloat$B$O(Bdouble$B$K$=$l$>$l3J>e$2$5$l$k(B($B$3$l$O%W%m%H%?%$%W(B
$B$,%9%3!<%W30$N>l9g$KE,MQ$5$l$k3J>e$2$HF1$8$b$N$G$"$k!#$3$l$O(B"
$B8E$$=q$-J}(B"$B$H$7$FCN$i$l$F$$$k!#<ALd(B11.3$B$r;2>H$N$3$H(B)$B!#$7$?$,$C(B
$B$F(Bprintf$B$N=q<0(B%f$B$K8+$($k$N$O$$$D$b(Bdouble$B$N?t$G$"$k(B($BF1MM$K(B%c$B$,(B
$B8+$k$N$O!"(B%hd$B$HF1$8$/!"(Bint$B$N?t$G$"$k(B)$B!#<ALd(B12.9$B$H(B12.13$B$b;2>H$N(B
$B$3$H!#(B

References: ANSI Sec. 3.3.2.2; ISO Sec. 6.3.2.2; H&S Sec. 6.3.5
p. 177, Sec. 9.4 pp. 272-3.

15.3:$B2r$1$J$/$F%$%i%$%i$7$F$$$?LdBj$,<B$O!"(B

printf("%d", n);

$B$G5/$-$F$$$k$3$H$,$o$+$C$?!#(BANSI$B$N4X?t%W%m%H%?%$%W$O>e$N$h$&$J(B
$B0z?t$N7?$NIT0lCW$+$i<i$C$F$/$l$k$H;W$C$F$$$?$N$@$,!#(B

A:$B4X?t$,2DJQ8D?t$N0z?t$r<h$k$H$-!"%W%m%H%?%$%W$O2DJQ8D?t$N0z?t$N(B
$B?t$d$=$N%G!<%?7?$K$D$$$F$N>pJs$rM?$($J$$(B($B$=$b$=$b=PMh$J$$(B)$B!#$h$C(B
$B$FDL>o$NJ]8n$N;EAH$_$O!"2DJQ8D?t$N0z?t%j%9%H$N2DJQ8D?t$NItJ,$K$O(B
$B$"$F$O$^$i$J$$!#%3%s%Q%$%i$O0EL[$NJQ49$b(B($BDL>o$N(B)$B%G!<%?7?$NIT(B
$B0lCW$b7Y9p$b$G$-$J$$!#(B

$B<ALd(B5.2, 11.3, 12.9, 15.2$B$b;2>H$N$3$H!#(B

15.4:$B2DJQ8D?t$N0z?t$r<h$k4X?t$r$I$&$d$C$F=q$1$P$h$$$+!#(B

A:<stdarg.h>$B$K$"$k5!G=$r;H$&!#(B

$B0J2<$O(Bmalloc$B$5$l$?5-21NN0h$KG$0U$N8D?t$NJ8;zNs$rO"7k$7$F3JG<$9(B
$B$k4X?t$G$"$k!#(B

#include <stdlib.h>/* malloc, NULL, size_t$BMQ(B */
#include <stdarg.h>/* va_ stuff$BMQ(B */
#include <string.h>/* strcat$B$J$IMQ(B */

char *vstrcat(char *first, ...)
{
size_t len;
char *retbuf;
va_list argp;
char *p;

if(first == NULL)
return NULL;

len = strlen(first);

va_start(argp, first);

while((p = va_arg(argp, char *)) != NULL)
len += strlen(p);

va_end(argp);

retbuf = malloc(len + 1);/* $B$*$7$j$N(B\0$BMQ$K(B+1 */

if(retbuf == NULL)
return NULL;/* $B%(%i!<(B */

(void)strcpy(retbuf, first);

va_start(argp, first);/* 2$B2sL\$N%9%-%c%s$N$?$a$K:F%9%?!<%H(B */

while((p = va_arg(argp, char *)) != NULL)
(void)strcat(retbuf, p);

va_end(argp);

return retbuf;
}

$B;H$$J}$O0J2<$N$h$&$K$J$k!#(B

char *str = vstrcat("Hello, ", "world!", (char *)NULL);

$B:G8e$N0z?t$r%-%c%9%H$9$kI,MW$,$"$k$3$H$KCm0U!#<ALd(B5.2$B$H(B15.3$B;2(B
$B>H(B($B;H$&?M$,!"JV$C$F$-$?(Bmalloc$B$5$l$?NN0h$r2rJ|$9$kI,MW$,$"$k$3(B
$B$H$K$bCm0U(B)$B!#(B

$B<ALd(B15.7$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. 7.3 p. 155, Sec. B7 p. 254; ANSI Sec. 4.8;
ISO Sec. 7.8; Rationale Sec. 4.8; H&S Sec. 11.4 pp. 296-9; CT&P
Sec. A.3 pp. 139-141; PCS Sec. 11 pp. 184-5, Sec. 13 p. 242.

15.5:printf()$B$N$h$&$K=q<0J8;zNs$H2DJQ8D?t$N0z?t$r$b$i$C$F!"0z?t$r(B
printf()$B$KEO$7$F!";E;v$N$[$H$s$I(Bprintf()$B$K$d$i$;$k$h$&$J4X?t$r!"(B
$B$I$&$d$C$F=q$1$P$h$$$N$+!#(B

A:vprintf()$B$+(Bvfprintf()$B$+(Bvsprintf()$B$r;H$&!#(B

$B!V(Berror: $B!W$H$$$&J8;zNs$r@hF,$K%(%i!<%a%C%;!<%8$r=PNO$7!"2~9T(B
$B$G=*$o$k4X?t(Berror()$B$r0J2<$K<($9!#(B

#include <stdio.h>
#include <stdarg.h>

void error(char *fmt, ...)
{
va_list argp;
fprintf(stderr, "error: ");
va_start(argp, fmt);
vfprintf(stderr, fmt, argp);
va_end(argp);
fprintf(stderr, "\n");
}

$B<ALd(B15.7$B$b;2>H$N$3$H!#(B

References: K&R2 Sec. 8.3 p. 174, Sec. B1.2 p. 245; ANSI
Secs. 4.9.6.7,4.9.6.8,4.9.6.9; ISO
Secs. 7.9.6.7,7.9.6.8,7.9.6.9; H&S Sec. 15.12 pp. 379-80; PCS
Sec. 11 pp. 186-7.

15.6:scanf()$B$KN`;w$N4X?t$r=q$$$F!"(Bscanf()$B$r8F$s$G$[$H$s$I$N;E;v$r$5(B
$B$;$?$$!#$I$&$9$l$P$h$$$+!#(B

A:$B;DG0$J$,$i!"(Bvscanf$B$NN`$OI8=`$G$O$J$$!#<+J,$G=q$/$7$+$J$$!#(B

15.7:ANSI$B5,3J7hDjA0$K3+H/$5$l$?%3%s%Q%$%i$r;H$C$F$$$k$,!"(B
<stdarg.h>$B$,$J$$!#$I$&$9$l$P$$$$$+!#(B

A:$B8E$$%X%C%@(B<varargs.h>$B$H$$$&$N$,$"$C$F!"$3$l$,$[$H$s$I(B
$BF1$85!G=$rDs6!$9$k!#(B

References: H&S Sec. 11.4 pp. 296-9; CT&P Sec. A.2 pp. 134-139;
PCS Sec. 11 pp. 184-5, Sec. 13 p. 250.

15.8:$B4X?t$,!"<B:]$K$$$/$D0z?t$rEO$5$l$?$+CN$kJ}K!$O$"$k$+!#(B

A:$B$3$N>pJs$O!"0\?"@-$N9b$$%W%m%0%i%`$K$O;H$($J$$!#8E$$%7%9%F%`$K(B
$B$O!"I8=`$G$O$J$$(Bnargs()$B4X?t$r;}$D$b$N$b$"$k$,!"$3$N4X?t$,Lr$K(B
$B$?$D$+$I$&$+$OI,$:5?$C$?$[$&$,$$$$!#$3$N4X?t$O!"$?$$$F$$0z?t$N(B
$B?t$G$O$J$/%o!<%I?t$rJV$9(B($B9=B$BN$d(Blong$B$N@0?t!"IbF0>.?tE@I=<($N(B
$B?t$O$?$$$F$$!"$$$/$D$+$N%o!<%I$H$7$FEO$5$l$k(B)$B!#(B

$B2DJQ8D?t0z?t$r<h$k4X?t$O!"0z?t<+?H$+$i0z?t$N?t$rH=CG$G$-$k$h$&(B
$B$K:n$i$J$1$l$P$J$i$J$$!#(Bprintf$B$NN`$O!"=q<0<1JL;R(B(%d$B$NN`(B)$B$r=q<0(B
$BJ8;zNs$+$iA\$7$F0z?t$N?t$rH=CG$9$k(B($B$@$+$i$3$N<j$N4X?t$O=q<0J8(B
$B;zNs$,<B:]$N0z?t$H0lCW$7$F$$$J$$$H$*$+$7$JF0:n$r$9$k(B)$B!#$h$/;H(B
$B$&JL$N<j$G!"0z?t$,$9$Y$FF1$87?$N$H$-$KJXMx$J$N$O!"HVJ<(B(0$B!"(B-1$B$^(B
$B$?$OE,@Z$J7?$K%-%c%9%H$7$?%L%k%]%$%s%?(B)$B$r%j%9%H$N:G8e$KCV$/$H(B
$B$$$&$b$N$G$"$k(B($B<ALd(B5.2$B$H(B15.4$B$N(Bexecl$B$H(Bvstrcat$B$NNc$r;2>H(B)$B!#:G8e(B
$B$K!"3F0z?t$N%G!<%?7?$,M=B,2DG=$J$i!"2DJQ8D?t$N0z?t$N?t$rL@<(E*(B
$B$KEO$9$3$H$,$G$-$k(B($B$?$@$7!"8F$S<j$K$7$F$_$l$P!"$$$A$$$A?t$($k(B
$B$N$OLLE]$@$m$&(B)$B!#(B

References: PCS Sec. 11 pp. 167-8.

15.9:$B:#;H$C$F$$$k%3%s%Q%$%i$O0J2<$N$h$&$K$O4X?t$r@k8@$5$;$F$/$l$J(B
$B$$!#(B

int f(...)
{
}

$B$9$J$o$A8GDj$N0z?t$J$7$G$OBLL\$J$h$&$@!#(B

A:$BI8=`(BC$B$O>/$J$/$H$b(B1$B$D8GDj$N0z?t$rI,MW$H$9$k!#(B1$B$D$K$O(Bva_start()
$B$KEO$;$k$h$&$K!#<ALd(B15.10$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 3.5.4, Sec. 3.5.4.3, Sec. 4.8.1.1; ISO
Sec. 6.5.4, Sec. 6.5.4.3, Sec. 7.8.1.1; H&S Sec. 9.2 p. 263.

15.10:$B2DJQ8D?t0z?t$r<h$k4X?t$,$"$C$F!"0z?t$H$7$F(Bfloat$B$r<h$k!#$J$<!"(B

va_arg(argp, float)

$B$G$O$&$^$/$$$+$J$$$N$+!#(B

A:$B2DJQ8D?t$N<B0z?t%j%9%H$N2DJQ8D?t$NItJ,$K$O!"8E$$!V>JN,;~$N0z?t(B
$B3J>e$2!W$,E,1~$5$l$k!#$D$^$j(Bfloat$B$N0z?t$OI,$:(Bdouble$B$K3J>e$2$5(B
$B$l(B($BI}$r9-$2$i$l(B)$B!"(Bchar$B$H(Bshort int$B$N0z?t$O(Bint$B$K3J>e$2$5$l$k!#$h$C(B
$B$F(Bva_arg(argp, float);$B$H=q$/$N$O>o$K8m$j$G$"$k!#Be$o$j$K(B
va_arg(argp, float)$B$H>o$K=q$+$J$1$l$P$J$i$J$$!#F1$8$h$&$K!"$b(B
$B$H$b$H$O(Bchar$B$d(Bshort$B$d(Bint$B$G$"$C$?0z?t$r<h$j=P$9$N$K$O(B
va_arg(argp, int)$B$H8F$P$J$1$l$P$J$i$J$$!#<ALd(B11.3$B$H(B15.2$B$b;2>H(B
$B$N$3$H!#(B

References: ANSI Sec. 3.3.2.2; ISO Sec. 6.3.2.2; Rationale
Sec. 4.8.1.2; H&S Sec. 11.4 p. 297.

15.11:va_arg()$B%^%/%m$r;H$C$?$,!"4X?t$X$N%]%$%s%?$N%G!<%?7?$r;}$D0z(B
$B?t$r<h$j=P$9$3$H$,$G$-$J$$!#(B

A:va_arg$B%^%/%m$r;H$&$3$H$K$h$k%G!<%?7?$N=q$-49$($O!"4X?t$X$N%]%$(B
$B%s%?$J$I$N6KC<$KJ#;($J%G!<%?7?$rAj<j$K$9$k$H:$Fq$H$J$k!#$7$+$7!"(B
$B4X?t$X$N%]%$%s%?7?$K(Btypedef$B$r;H$($P!"$9$Y$F$&$^$/$$$/$@$m$&!#(B
$B<ALd(B1.21$B$b;2>H$N$3$H!#(B

References: ANSI Sec. 4.8.1.2; ISO Sec. 7.8.1.2; Rationale
Sec. 4.8.1.2.

15.12:$B2DJQ8D?t$N0z?t$r;}$A!"$=$N0z?t$rJL$N4X?t(B($B$=$N4X?t$b2DJQ8D?t$N0z(B
$B?t$r<h$k(B)$B$KEO$94X?t$r$I$&$d$C$F5-=R$9$l$P$h$$$+!#(B

A:$B0lHLE*$K$O$G$-$J$$!#M}A[E*$K$O(B2$BHVL\$N4X?t$r=q$-D>$7$F(Bva_list$B$r(B
$B0z?t$H$7$F<h$k(B(vfprintf()$B$HF1$8$h$&$K!">e$N<ALd(B15.5$B;2>H(B)$B$h$&$K(B
$B$9$k!#0z?t$rK\Ev$K0z?t$H$7$FD>@\EO$5$J$1$l$P$J$i$J$$$H$-$d!"(B2
$BHVL\$N4X?t$r(Bva_list$B$r0z?t$H$7$F<h$k$h$&$K=q$-49$($k<j$,A*$Y$J(B
$B$$$J$i(B($B8@$$49$($l$P!"$3$N(B2$BHVL\$N!"8F$P$l$kB&$N4X?t$,!"(Bva_list
$B$G$O$J$/$FK\Ev$K2DJQ8D?t$N0z?t$r<h$i$J$1$l$P$J$i$J$$$J$i(B)$B0\?"(B
$B@-$N$"$k2r$OB8:_$7$J$$!#(B($B$3$NLdBj$O5!<o0MB8$G$"$k%"%;%s%V%i8@8l(B
$B$^$G;}$A=P$;$P2r7h$G$-$k$@$m$&!#0J2<$N<ALd(B15.13$B$b;2>H$N$3$H(B)$B!#(B

15.13:$B<B9T;~$K!"0z?t%j%9%H$r$D$/$C$F4X?t$r8F$S=P$9$3$H$,$G$-$k$+!#(B

A:$BF0$/$3$H$,J]>Z$5$l$kJ}K!$b0\?"@-$N9b$$J}K!$b$J$$!#6=L#$,$"$k$N(B
$B$J$i$3$N(BFAQ$B$NJT<T$KJ9$$$F$_$k$3$H!#H`$O%X%s%F%3%j%s$J%"%$%G%"(B
$B$r$$$/$D$+;}$C$F$$$k(B

$B0z?t%j%9%H$NBe$o$j$K!"HFMQ$N%]%$%s%?(B(void *)$B$NG[Ns$rEO$9$3$H(B
$B$r9M$($?$[$&$,$$$$$+$b$7$l$J$$!#8F$P$l$?4X?t$OG[Ns$r!"(Bmain()$B$,(B
argv$B$r=hM}$9$k$N$HF1$8$h$&$K!"0l$D0l$D=hM}$9$k$3$H$,$G$-(B($B$9$0(B
$B$o$+$k$h$&$K!"$3$l$O8F$P$l$kB&$N4X?tA4BN$r$3$A$i$G4IM}$7$F$$$k(B
$B>l9g$K8B$i$l$k(B)$B!#(B

($B<ALd(B19.36$B$b;2>H$N$3$H!#(B)


