£Ã¸À¸ì¥×¥í¥°¥é¥ß¥ó¥°¤Î´ðÁ÷±Îý
ÈÇ
À¾°æ ½ß
Table of Contents
1 ¥×¥í¥°¥é¥àºîÀ®¾å¤ÎÃí°ÕÅÀ
-
ʸ»úÎó¤ÎÆÉ¤ß¹þ¤ß¤Î»þ¡¢´Ø¿ô scanf()¤äfscanf(),gets()¤Ï»È¤ï¤Ê¤¤¡£
Íýͳ¤Ï°Ê²¼¤ÎÄ̤ꡣ
-
ʸ»úÎó¤ÎÆÉ¤ß¹þ¤ß»þ¤ËºÇÂçʸ»ú¿ô¤ò»ØÄê¤Ç¤¤Ê¤¤¤Î¤Ç´í¸±¤Ê¥Ð¥°¤¬À¸
¤¸¤ë¤³¤È¤¬¤¢¤ë¡£Î㤨¤Ð°Ê²¼¤Î¤è¤¦¤ÊÎã¤Ç¡¤20ʸ»ú°Ê¾å¤Îʸ»úÎó¤òÆþ
ÎϤ¹¤ë¤È°Û¾ï½ªÎ»¤ò¤·¤¿¤ê¡¤¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï½ÅÂç¤Ê¥»¥¥å¥ê¥Æ¥£¥Û¡¼
¥ë¤È¤Ê¤ê¤¦¤ë¡£
char buf[20];
scanf("%s",buf);
- ³Æ¹ÔËè¤Ë½èÍý¤ò¹Ô¤Ã¤¿¤Û¤¦¤¬¡¤ÆþÎϤ˥ȥé¥Ö¥ë¤¬¤¢¤Ã¤¿»þ¤ËÂн褷
¤ä¤¹¤¤¡£(scanf, fscanf ¤Ï²þ¹Ô¤ò̵»ë¤·¤ÆÆÉ¤ß¹þ¤ß¤ò¹Ô¤¦)
¤«¤ï¤ê¤Ë¡¤Ê¸»úÎó¥Ç¡¼¥¿¤ÎÆÉ¤ß¹þ¤ß¤Ïfgets, sscanf ¤òÍѤ¤¤ë¤³¤È¤¬Â¿¤¤¡£
fgets, sscanf ¤Ë¤Ä¤¤¤Æ¤Î»ÅÍÍ¤Ï man ¤ò»²¾È¤¹¤ë¤³¤È¡£
°Ê²¼¤Ïɸ½àÆþÎÏ(stdin)¤«¤éÀ°¿ô¤Èʸ»úÎó¤òÆÉ¤ß¤³¤àÎã¡£
#define MAXLEN 128
int i;
char buf[MAXLEN],name[MAXLEN];
fgets(buf,MAXLEN,stdin)
sscanf(buf,"%d %s",&i,name);
- ɬÍפʥѥé¥á¡¼¥¿¤Ï¥³¥Þ¥ó¥É¤Î°ú¿ô¤È¤·¤ÆÅϤ¹¤³¤È(°Ê²¼»²¾È)
Îã)
$ ./command 0.01 10 2000
main´Ø¿ô¤ÎÀë¸À¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ë¡£
int main( int argc, char *argv[] )
- main ʸ¤À¤±¤Î¥×¥í¥°¥é¥à¤Ï¡¤¤è¤Û¤Éû¤¤¤â¤Î¤Ç̵¤¤¸Â¤êÉԲġ£
°ì¤Ä¤Î´Ø¿ôñ°Ì¤Ï1²èÌÌÄøÅÙ¤ÎÂ礤µ¤ò¾å¸Â¤Ë¤¹¤ë¤Î¤¬Ë¾¤Þ¤·¤¤¡£
- Makefile ¤òºîÀ®¤·¡¤make ¥³¥Þ¥ó¥É¤Ç¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¡£
Makefile ¤Îºî¤êÊý¤Ë¤Ä¤¤¤Æ¤ÏÉÕÏ¿A8Makefile¤Ë¤Ä¤¤¤Æ<A NAME="sec:makefile"></A>section.A»²¾È¡£
- ¥×¥í¥°¥é¥à¼Â¹Ô»þ¤Ë¡¤°ú¿ôÅù¤ÎÉÔ¶ñ¹ç¤Ç°Û¾ï½ªÎ»¤¹¤ë¤³¤È¤¬Ìµ
¤¤¤è¤¦¤Ë½½Ê¬Ãí°Õ¤¹¤ë¤³¤È¡£
- ¸À¸ì¤ÏC++¤Ç¤â¤è¤¤¡£(¤³¤Î¾ì¹ç¥Õ¥¡¥¤¥ëÆþ½ÐÎϤÎÌ¿Îá¤Ï¡¤Îý½¬ÌäÂêÃæ¤Î»Ø
Äê¤È¤Ï°Û¤Ê¤ëC++¤Î¥¹¥È¥ê¡¼¥àÆþ½ÐÎϤÎÌ¿Îá¤òÍѤ¤¤Æ¤è¤¤)
2 ½àÈ÷±¿Æ°
2.1 math.h
±ß¼þΨ¤ä¼«Á³Äê¿ôÅù¤Î¿¤¯¤ÎÄê¿ô¤Ï math.h ¤Ë¥Þ¥¯¥íÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤É¤Î¤è
¤¦¤Ê¥Þ¥¯¥í̾¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«³Îǧ¤»¤è¡£Â¾¤Ë¤É¤Î¤è¤¦¤ÊÄê¿ô¤¬½àÈ÷¤µ¤ì¤Æ¤¤
¤ë¤«¤â³Îǧ¤»¤è¡£
2.2 Äê¿ô¤ÎÄêµÁ
Äê¿ô¤Ï¥×¥ê¥×¥í¥»¥Ã¥µ(ÉÕÏ¿??»²¾È)¤ò»È¤Ã¤Æ
#define MAX 10
¤ÈÄêµÁ¤¹¤ëÊýË¡¤È¡¢const¤ò»È¤Ã¤Æ¡¢
const int MAX=10;
¤ÈÄêµÁ¤¹¤ëÊýË¡¤¬¤¢¤ë¡£
#define¤Ï¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÁ°¤Ëñ¤Ê¤ëʸ»úÎóÃÖ´¹¤È¤·¤Æ¼Â¹Ô¤µ¤ì¡¢
const¤òÍѤ¤¤ÆÀë¸À¤·¤¿ÊÑ¿ô¤Ï¥×¥í¥°¥é¥à¤Î¼Â¹Ô»þ¤Ë¥á¥â¥êÎΰ褬³ÎÊÝ
¤µ¤ì¤ë¡£
¤³¤Î¤è¤¦¤ÊÆÃħ¤Î¤¿¤á¡¤¤½¤ì¤¾¤ìĹ½ê¤Èû½ê¤¬¤¢¤ë¡£
-
°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ¡¢¤É¤Î¤è¤¦¤ÊÌäÂ꤬¤¢¤ë¤«½Ò¤Ù¡¢½¤ÀµÊýË¡¤ò2
Ä̤ê(
#define¤ò»È¤¦ÊýË¡¤Èconst¤ò»È¤¦ÊýË¡)¤ò½Ò¤Ù¤è¡£
(¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¤Ï¤¤¤º¤ì¤âÌäÂê̵¤¯Æ°¤¯¾ì¹ç¤¬¤¢¤ë¤¬¡¢#define¤È
const¤ÎËÜÍè¤Îưºî¤ò¹Í¤¨¤ÆÌäÂêÅÀ¤ò½Ò¤Ù¤ë¤³¤È¡£)
#include <stdio.h>
#define MIN -2
int main(void)
{
printf("%d",3/MIN);
}
- °Ê²¼¤Î¥×¥í¥°¥é¥à¤Ë¤Ä¤¤¤Æ¡¢¤É¤Î¤è¤¦¤ÊÌäÂ꤬¤¢¤ë¤«½Ò¤Ù¡¢
#define¤ò»È¤Ã¤Æ½¤Àµ¤»¤è¡£
ÇÛÎó¤ÎÂ礤µ¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë·è¤Þ¤Ã¤Æ¤¤¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤³¤È¤ËÃí°Õ¤»¤è¡£
#include <stdio.h>
const int MAX=3;
int main(void)
{
int a[MAX],i;
for(i=0;i<MAX;i++)a[i]=0.0;
}
2.3 main´Ø¿ô¤Ø¤Î°ú¿ô¤Î½èÍý
- ¥×¥í¥°¥é¥à¤ËÍ¿¤¨¤¿°ú¿ô¤Î¿ô¤È¡¤°ú¿ô¤òɽ¼¨¤¹¤ë¥×¥í¥°¥é¥àshowarg¤òºî
¤ê¤Ê¤µ¤¤¡£ ¼Â¹Ô·ë²Ì¤ÎÎã¤Ï°Ê²¼¤ÎÄ̤ꡣ
$ ./showarg a b c
4
./showarg a b c
- 2¤Ä¤Î¼Â¿ô¤ÎϤò·×»»¤¹¤ë¥³¥Þ¥ó¥Ésum¤ò¼¡¤Î2¼ïÎà¤ÎÊýË¡¤Ç¤Ä¤¯¤ê¤Ê¤µ¤¤¡£
-
2¤Ä¤Î¼Â¿ô¤ò°ú¿ô¤È¤·¤ÆÍ¿¤¨¤ë(
$ ./sum 1 2 ¤È¼Â¹Ô¤¹¤ì¤Ð Åú¤¨
¤¬3 ¤¬É½¼¨¤µ¤ì¤ë¤è¤¦¤Ê¥×¥í¥°¥é¥à)¡£°ú¿ô¤¬2¸ÄÍ¿¤¨¤é¤ì¤Ê¤¤¤È¤¤Ë¤Ï¡¤
°Ê²¼¤Î¤è¤¦¤Ê¥á¥Ã¥»¡¼¥¸¤ò½Ð¤·¤Æ½ªÎ»¤¹¤ë¤³¤È¡£
$ ./sum 1
Usage: sum <num1> <num2>
Ãí¡Ëmain´Ø¿ô¤Ø¤Î°ú¿ô¤ÏÁ´¤ÆÊ¸»úÎó¤È¤·¤Æ¼õ¤±¼è¤é¤ì¤ë¡£Ê¸»úÎó¤ò
double¤ËÊÑ´¹¤¹¤ë¤Ë¤Ï
´Ø¿ô atof() ¤òÍѤ¤¤ë¡£
- 2¤Ä¤Î¼Â¿ô¤Ï¥×¥í¥°¥é¥àÃæ¤«¤é fgets, sscanf ¤òÍѤ¤¤ÆÉ¸½àÆþÎÏ
(stdin)¤«¤é¼Â¹Ô»þ¤ËÆÉ¤ß¹þ¤à¡£
2.4 double¤Èfloat¤Î±é»»
-
double x=0.0¤Ë0.1¤ò10²ó¤·¤¿ÃͤÏ1.0¤Ë¤Ê¤é¤Ê¤¤¡¥
¤¤¤Ã¤¿¤¤¤É¤ÎÄøÅÙ¤½¤ÎÃͤϰ㤦¤Î¤À¤í¤¦¡©
¤Þ¤¿¤½¤ÎÍýͳ¤Ï¤Ê¤Ë¤«¡©
- Á°Ìä¤Ç double ¤Î¤«¤ï¤ê¤Ë float ¤òÍѤ¤¤¿¾ì¹ç¤Ë¤Ä¤¤¤Æ¡¤Æ±ÍͤΤ³¤È
¤òµÄÏÀ¤»¤è¡¥
- °Ê²¼¤Î¥×¥í¥°¥é¥à¤òºî¤Ã¤¿¤È¤³¤í˽Áö¤·¤Æ¤·¤Þ¤Ã¤¿¡¥¤Ê¤¼¤«Íýͳ¤ò½Ò¤Ù¤è¡¥
#include <stdio.h>
int main(void)
{
double x=0.0;
while(1) {
x+=0.1;
if(x==1.0) break; }
return(0);
}
x=1.0¤ò0.1Çܤ·¤Æ¤«¤é10.0Çܤ¹¤ë¤È¤¤¤¦±é»»¤ò²¿ÅÙ¤«·«¤êÊÖ¤¹
¾ì¹ç¤ËÉÕ¤¤¤Æ¡¤x¤¬ double ¤Î¾ì¹ç¤È float ¤Î¾ì¹ç¤Ç¤É¤Î¤¯¤é¤¤±é
»»»þ´Ö¤Îº¹¤¬¤¢¤ë¤«¤òÄ´¤Ù¤è¡£¥×¥í¥°¥é¥à¤Î¼Â¹Ô»þ´Ö¤Ïtime¥³¥Þ¥ó¥É¤Ç·×¬
¤Ç¤¤ë($ time <¥³¥Þ¥ó¥É̾>)¡£
·ë²Ì¤Ï½èÍý·Ï¤Ë¤è¤Ã¤Æ°ã¤¦¤¬¡¤double¤Èfloat¤Î±é»»¤Ë¤«¤«¤ë»þ´Ö¤ÏƱ¤¸¤Ë
¤Ê¤ë½èÍý·Ï¤â¿¤¤¡£¤Þ¤¿¡¢float¤ÏÀºÅÙ¤¬Èó¾ï¤Ë°¤¤¤¿¤á¡¢¥á¥â¥êÎ̤¬¾¯¤Ê
¤¤¤È¤°Ê³°¤Ë¤Ïfloat¤Ï¤Û¤È¤ó¤É»È¤ï¤ì¤Ê¤¤¡£
2.5 ưŪ¤Ê¥á¥â¥ê³ÎÊÝ
-
°ú¿ô¤ÇÀ°¿ôn¤¬Í¿¤¨¤é¤ì¤¿¤È¤¡¤calloc ¤òÍѤ¤¤ÆÇÛÎó
int a[n]¤ò³ÎÊݤ·¡¤Á´¤Æ¤Îi<n¤Ë¤Ä¤¤¤Æ a[i]=i ¤òÂåÆþ¤·¤¿¸å¡¤
a[]¤ÎÆâÍÆ¤òɽ¼¨¤¹¤ë¥³¥Þ¥ó¥Éarray¤ò¤Ä¤¯¤ì¡£
¤Ê¤ª¡¤¤³¤ÎÀá¤Ç¤Î¥×¥í¥°¥é¥à¤Ç¤Ï°Ê²¼¤Ëµ¤¤òÉÕ¤±¤ë¤³¤È¡£
-
¥á¥â¥ê³ÎÊݤ˼ºÇÔ¤·¤¿¤È¤¤Ë¤Ï¡¤¥¨¥é¡¼½ÐÎϤò¹Ô¤Ã¤Æ½ªÎ»¤¹¤ë¤³¤È
- ɬ¤º³ÎÊݤ·¤¿¥á¥â¥ê¡¼¤Ïɬ¤º¥×¥í¥°¥é¥à½ªÎ»»þ¤Þ¤Ç¤Ë³«Êü¤¹¤ë¤³¤È¡£
- °ú¿ô¤ÇÀ°¿ôn¤¬Í¿¤¨¤é¤ì¤¿¤È¤¡¤£²¼¡¸µÇÛÎó
int a[n][n]¤ò³ÎÊݤ·¡¤¤½¤ÎÇÛÎó
¤òñ°Ì¹ÔÎó¤È¤·¤Æ¡¢ ÇÛÎóa¤ÎÆâÍÆ¤òɽ¼¨¤¹¤ë¥³¥Þ¥ó¥Éarray2¤ò¤Ä¤¯¤ì¡£
3 ¥Õ¥¡¥¤¥ëÆþ½ÐÎϤÈʬ³ä¥³¥ó¥Ñ¥¤¥ë
-
°Ê²¼¤Î´Ø¿ô·²¤ò¤Ä¤¯¤ê¡¤
mylib.c¤È¤¤¤¦Ì¾Á°¤ÇÊݸ¤·¤Ê¤µ¤¤¡£
-
°ú¿ô¤È¤·¤Æ¤¦¤±¤È¤Ã¤¿¥Õ¥¡¥¤¥ë̾¤Î´Ø¿ô¤òÆÉ¤ß¹þ¤ß¥â¡¼¥É¤Ç³«¤¤¤Æ¡¤¤½
¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òÊÖ¤¹´Ø¿ô
fRopen¡£
¤¿¤À¤·¡¤¥Õ¥¡¥¤¥ë¤ò³«¤¯¤Î¤Ë
¼ºÇÔ¤·¤¿¤È¤¤Ë¤Ï¡¢¡ÖFailed to open ¢þ¢þ¡×(¢þ¢þ¤Ë¤Ï°ú¿ô
¤ÇÍ¿¤¨¤¿¥Õ¥¡¥¤¥ë̾¤¬Æþ¤ë)¤Èɸ½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Æ¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë¡£
FILE* fRopen(char* fname)
- °ú¿ô¤È¤·¤Æ¤¦¤±¤È¤Ã¤¿¥Õ¥¡¥¤¥ë̾¤Î´Ø¿ô¤ò½ñ¤¹þ¤ß¥â¡¼¥É¤Ç³«¤¤¤Æ¡¤¤½
¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤òÊÖ¤¹´Ø¿ô
fWopen¡£
¤¿¤À¤·¡¤¥Õ¥¡¥¤¥ë¤ò³«¤¯¤Î¤Ë¼ºÇÔ¤·¤¿¤È¤¤Ë¤Ï¡¢¡ÖFailed to open ¢þ¢þ¡×
¤Èɸ½à¥¨¥é¡¼½ÐÎϤ˽ÐÎϤ·¤Æ¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë¡£
FILE* fWopen(char* fname)
mylib.c¤ÎÃæ¤Î´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×Àë¸À(´Ø¿ô¸¶·¿Àë¸À)¤Î¤ß¤òµ
ºÜ¤·¤¿¥Õ¥¡¥¤¥ëmylib.h¤ò¤Ä¤¯¤ê¤Ê¤µ¤¤¡£
- »ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤ò¡¤Â¾¤Î¥Õ¥¡¥¤¥ë¤Ë½ÐÎϤ¹¤ë¥³¥Þ¥ó¥Écopy
¤ò¤Ä¤¯¤ê¤Ê¤µ¤¤¡£¤¹¤Ê¤ï¤Á¡¤
$ ./mycopy copy.c copy2.c
¤ò¼Â¹Ô¤¹¤ì¤Ð¡¤copy.c ¤ÎÃæ¿È¤¬¤½¤Î¤Þ¤Þ copy2.c ¤Ë¥³¥Ô¡¼¤µ¤ì¤ë¥×¥í¥°¥é¥à
¤Ç¤¢¤ë¡£·ë²Ì¤Ïdiff¥³¥Þ¥ó¥É¤òÍѤ¤¤ÆÀµ³Î¤Ë¥³¥Ô¡¼¤Ç¤¤Æ¤ë¤«¤ò³Îǧ¤»¤è¡£
¤¿¤À¤·¡¤°Ê²¼¤Î»ÅÍͤòËþ¤¿¤¹¤³¤È¡£
-
-h ¥ª¥×¥·¥ç¥ó¤òÉÕ¤±¤Æ¼Â¹Ô¤¹¤ì¤Ð°Ê²¼¤Î¤è¤¦¤Ë Usage ¤¬É½¼¨¤·¤Æ½ªÎ»¤¹¤ë¡£
$ ./mycopy -h
Usage: mycopy [option] <file 1> <file 2>
option:
-h) Show this message
-n) with line number
- °ú¿ô¤¬Â¤ê¤Ê¤«¤Ã¤¿¤ê¡¤Â¿¤¹¤®¤ë»þ¤Ë¤Ï¡¤
-h ¥ª¥×¥·¥ç¥ó¤Î¾ì¹ç¤ÈƱ
ÍͤΥá¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë¡£
- °ú¿ô¤Ë
-n ¥ª¥×¥·¥ç¥ó¤¬»ØÄꤵ¤ì¤¿¤È¤¤Ë¤Ï³Æ¹Ô¤Ë¹ÔÈÖ¹æ¤ò¤Ä¤±¤ë¡£
- ¤¹¤Ç¤Ëºî¤Ã¤¿
mylib.c¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤ò³«¤¯´Ø¿ô¤òÍøÍѤ·¡¢Ê¬
³ä¥³¥ó¥Ñ¥¤¥ë¤ò¹Ô¤¦¤³¤È¡£
mycopy.c¤ò²þ¤¤·¤Æ¡¤¥Þ¥¯¥íÊÑ¿ôCOPY¤òÄêµÁ¤·¤Æ¤¤¤ë¤È¤¤Ë¤Ï
(ÉÕÏ¿??»²¾È)¤³¤ì¤Þ¤ÇÄ̤ꥳ¥Ô¡¼¥³¥Þ¥ó¥É¤Ë¤Ê¤ê¡¤
ÄêµÁ¤·¤Æ¤Ê¤¤¤È¤¤Ë¤ÏÆÉ¤ß¹þ¤ó¤À¥Õ¥¡¥¤¥ë¤ò²èÌ̤Ëɽ¼¨¤¹¤ë¥³¥Þ¥ó¥É¤Ë¤Ê¤ë¤è
¤¦¤Ë¤·¤Ê¤µ¤¤¡£
¤¹¤Ê¤ï¤Á¡¤COPY¤òÄêµÁ¤·¤Ê¤¤¤È¤¤Î»ÅÍͤϰʲ¼¤Î¤È¤ª¤ê¡£
-
°Ê²¼¤Î¤è¤¦¤Ë¼Â¹Ô¤¹¤ì¤Ð»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤¬É½¼¨¤µ¤ì¤ë¡£
$ ./mycopy copy.c
- ¤½¤Î¾¥ª¥×¥·¥ç¥óÅù¤ÏËÜÍè¤Î¥³¥Ô¡¼¥³¥Þ¥ó¥É¤Î»ÅÍÍ¤ÈÆ±¤¸¡£
(¥Ò¥ó¥È¡§½ÐÎÏ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤ò¡¢COPY¤òÄêµÁ¤·¤¿¾ì¹ç¤Ë¤Ï»ØÄꤷ¤¿¥Õ¥¡
¥¤¥ë¤Ë¡¢ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¤È¤¤Ë¤Ïɸ½à½ÐÎϤËÀßÄꤹ¤ë)
- ¥³¥ó¥Ñ¥¤¥ë»þ¤Ëgcc¤Î¥ª¥×¥·¥ç¥ó¤Ë
-D<¥Þ¥¯¥í̾>¤òÄɲ乤ë¤È¡¢
¥×¥í¥°¥é¥àÃæ¤Ë»ØÄꤷ¤¿¥Þ¥¯¥íÄêµÁ¤ò¹Ô¤Ã¤¿¤Î¤ÈƱ¤¸°ÕÌ£¤Ë¤Ê¤ë¡£Î㤨¤Ð¡¢
¥×¥í¥°¥é¥àÃæ¤Ç#define COPY¤È¤¹¤ë¤«¤ï¤ê¤Ë¡¢¥³¥ó¥Ñ¥¤¥ë»þ¤Ë
gcc -DCOPY ...¤È¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
¤³¤Î¤³¤È¤òÍøÍѤ·¤Æ¡¢make mycopy¤È¤¹¤ì¤Ð¡¢mycopy.c¤«¤é
mycopy¤ò¥³¥ó¥Ñ¥¤¥ë¡¢make mycat¤È¤¹¤ì¤Ð¤µ¤¤Û¤É¤Î²èÌÌɽ
¼¨¤ò¤¹¤ë¥Ð¡¼¥¸¥ç¥ó¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤Æmycat¤È¤¤¤¦Ì¾Á°¤Î¼Â¹Ô·Á¼°¤ò
ºî¤ë¤è¤¦¤ËMakefile¤ò½¤Àµ¤·¤Ê¤µ¤¤¡£
4 ¿ôÃÍ·×»»
-
x2+y2£ 1¤Èy³ 0¤Ç°Ï¤Þ¤ì¤ëÎΰè¤ÎÌÌÀѤ¬p/2¤Ç¤¢¤ë¤³¤È¤òÍѤ¤¡¤
¿ôÃÍ·×»»¤ÇÀÑʬ·×»»¤ò¹Ô¤Ã¤Æp¤òµá¤á¤Ê¤µ¤¤¡£
4.2 Íð¿ô¤È¥Ç¡¼¥¿½èÍý
-
£°°Ê¾å£±°Ê²¼¤ÎÍð¿ô¤ò2²óȯÀ¸¤·¤¿»þ¤Ë¤½¤Î2¾èϤ¬1°Ê²¼¤Ë¤Ê¤ë³ÎΨ¤Ï
p/4¤Ç¤¢¤ë¡£
¤³¤Î¤³¤È¤òÍøÍѤ·¤Æ¡¤±ß¼þΨp¤Î¶á»÷Ãͤòµá¤á¤ë¥×¥í¥°¥é¥à¤ò¤Ä¤¯¤ê¤Ê
¤µ¤¤¡£Íð¿ô¤òȯÀ¸¤¹¤ë²ó¿ô¤Ï¥×¥í¥°¥é¥à¤Î°ú¿ô(main´Ø¿ô¤Î°ú¿ô)¤Ç»ØÄꤹ¤ë¤³¤È¡£
- °ú¿ô¤ÇÍ¿¤¨¤¿²ó¿ô¤À¤±0°Ê¾å1°Ê²¼¤Î°ìÍÍÍð¿ô¤òȯÀ¸¤·¡¢·ë²Ì¤ò³Æ¹Ô¤Ë
ɽ¼¨¤¹¤ë¥×¥í¥°¥é¥à
genrand¤ò¤Ä¤¯¤ê¤Ê¤µ¤¤¡£
¤Þ¤¿¡¤100²óÍð¿ô¤òȯÀ¸¤µ¤»¤¿·ë²Ì¤ò¥ê¥À¥¤¥ì¥¯¥È(UNIX´ØÏ¢¤Î¥É¥¥å¥á¥ó
¥È»²¾È)¤òÍѤ¤¤ÆÊݸ¤·¤Ê¤µ¤¤¡£
- ¿ôÃͥǡ¼¥¿¤ò¥Õ¥¡¥¤¥ë¤«¤éÆÉ¤ß¹þ¤ß¡¤°Ê²¼¤ò¹Ô¤¦¥×¥í¥°¥é¥àgetdist¤ò¤Ä¤¯¤ì¡£
¤Þ¤¿¡¢¤½¤Îưºî¤òÁ°Ìä¤ÇºîÀ®¤·¤¿Íð¿ô¥Õ¥¡¥¤¥ë¤òÍѤ¤¤Æ³Îǧ¤·¤Ê¤µ¤¤¡£
-
¥ª¥×¥·¥ç¥ó¤Ê¤·¤Î»þ¤Ï¥Ç¡¼¥¿¤ÎÊ¿¶Ñ¡¤É¸½àÊк¹¡¤ºÇ¾®ÃÍ¡¤ºÇÂçÃͤòɽ¼¨
-s ¥ª¥×¥·¥ç¥ó¤Ç¥Ç¡¼¥¿¤ò¥½¡¼¥È¤·¤¿·ë²Ì¤ò½ÐÎÏ
-g ¥ª¥×¥·¥ç¥ó¤Ç¥Ç¡¼¥¿¤Î¥Ò¥¹¥È¥°¥é¥à¤ò½ÐÎÏ(ÀßÄꤷ¤¿¹ï¤ß
Éý¤Ç, ÅÙ¿ôÉÑÅÙ¤ò'*'¤ò»È¤Ã¤ÆÉ½¼¨¤¹¤ë)¡£Î㤨¤ÐÀßÄꤷ¤¿¹ï¤ß¤ò0.1¤Ë¤·
¤¿¾ì¹ç¤Ë¤Ï
--------------------
0-0.1: **
0.1-0.2: ****
0.2-0.3: ***
(°Ê²¼Î¬)
--------------------
¤È¤¤¤Ã¤¿É½¼¨¤ò¹Ô¤¨¤ë¤è¤¦¤Ë¤¹¤ë¡£
-h¥ª¥×¥·¥ç¥ó¤â¤·¤¯¤Ï¡¢¥ª¥×¥·¥ç¥ó¤¬ÉÔŬÀڤʤȤ¤Ë¤Ï¡¤»È
¤¤Êý(Usage)¤òɽ¼¨
4.3 ¥Ñ¥¤¥×
-
´Ø¿ôfRopen¤ò¥Ñ¥¤¥×(ÉÕÏ¿C11¥Ñ¥¤¥×<A NAME="sec:pipe"></A>section.C)¤ËÂбþ¤Ç¤¤ë¤è¤¦¤Ë
¤·¤¿´Ø¿ôfRPopen¤òºî¤ê,
mylib.c, mylib.h¤ËÄɲ䷤ʤµ¤¤¡£
- ¥Ñ¥¤¥×¤òÍѤ¤¤Æ¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò¼õ¤±¼è¤ì¤ë¤è¤¦¤Ë¡¤Á°Ìä¤ÇºîÀ®¤·¤¿
getdist¤ò²þÎɤ·¤Ê¤µ¤¤¡£¤½¤Îưºî¤Ï°Ê²¼¤ò»î¤·¤Æ³Îǧ¤·¤Ê¤µ¤¤¡£
$ genrand 100 | getdist <¥ª¥×¥·¥ç¥ó>
$ getdist <¥ª¥×¥·¥ç¥ó> <¥Õ¥¡¥¤¥ë̾>
4.4 ÈùʬÊýÄø¼°
-
ÈùʬÊýÄø¼°x=x¤Ë¤Ä¤¤¤Æ°Ê²¼¤ò¹Ô¤¤¤Ê¤µ¤¤¡£
-
ÈùʬÊýÄø¼°¤Î²ò¤ò¡Ê²òÀÏŪ¤Ë¡Ëµá¤á¤è¡£
¤½¤Î²ò¤Îµóư¤Î¥°¥é¥Õ¤ò½ñ¤¡¤¤½¤Î¤è¤¦¤Ê¥°¥é¥Õ¤ÎÆÀ¤é¤ì¤ëÍýͳ¤Ë¤Ä¤¤¤Æ
¹Í»¡¤»¤è¡£
- ÈùʬÊýÄø¼°¤Î²ò(x(t))¤òµá¤á¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤·¡¤¤½¤ì¤ò¤â¤È¤Ë
¼«Á³Äê¿ôe¤òµá¤á¤è¡£
- °Ê²¼¤ÎÈùʬÊýÄø¼°¤Ë¤Ä¤¤¤Æ³Æ±é½¬¤ò¹Ô¤¤¤Ê¤µ¤¤¡£
|
|
|
|
æ
è |
|
ö
ø |
=
|
æ
è |
|
ö
ø |
|
æ
è |
|
ö
ø |
|
|
|
|
|
|
|
|
|
|
|
|
-
ÈùʬÊýÄø¼°¤Î²ò¤ò¡Ê²òÀÏŪ¤Ë¡Ëµá¤á¤è¡£
¤½¤Î²ò¤Îµóư¤Î¥°¥é¥Õ¤ò½ñ¤¡¤¤½¤Î¤è¤¦¤Ê¥°¥é¥Õ¤ÎÆÀ¤é¤ì¤ëÍýͳ¤Ë¤Ä¤¤¤Æ¹Í»¡¤»¤è¡£
- ÈùʬÊýÄø¼°¤Î²ò((x(t),y(t))¤òµá¤á¡¤·ë²Ì¤ò¥°¥é¥Õɽ¼¨¤¹¤ë¥×¥í¥°¥é¥à¤òºîÀ®¤»¤è¡£
·ë²Ì¤Î¥°¥é¥Õɽ¼¨¤ÎÊýË¡¤ÏÊÌÅÓÀâÌÀ¤¹¤ë¡£
A Makefile¤Ë¤Ä¤¤¤Æ
¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¼ê³¤Åù¤òMakefile¤Ë½ñ¤¤¤Æ¤ª¤¯¤È¥³¥ó¥Ñ¥¤¥ë
¤¬³Ú¤Ë¤Ê¤ë¡£
°Ê²¼¤Ï°ìÈÖ´Êñ¤Ê¥µ¥ó¥×¥ë¡£
arg: arg.c # arg ¤ò arg.c ¤«¤éºî¤ë¤³¤È¤òÀë¸À
gcc -o arg arg.c # ¶ñÂÎŪ¤Êºî¤êÊý(¹ÔƬ¤Ï¥¹¥Ú¡¼¥¹¤Ç¤Ï̵¤¯¤Æ¥¿¥Ö)
mycat: mycat.c # mycat ¤ò mycat.c ¤«¤éºî¤ë¤³¤È¤òÀë¸À
gcc -o mycat mycat.c # ¶ñÂÎŪ¤Êºî¤êÊý
MakefileÃæ¤Î³Æ¹Ô¤Ë¤ª¤¤¤Æ¡¢µ¹æ#¤è¤ê¸å¤í¤Ï¥³¥á¥ó¥È¤È¤ß¤Ê¤µ¤ì¤ë¡£
¾åµ¤Î¤è¤¦¤Êµ½Ò¤ò¤·¤¿Makefile¤ò¤Ä¤¯¤Ã¤Æ¤ª¤¡¤
$ make arg
¤ò¼Â¹Ô¤¹¤ë¤È¡¤°Ê²¼¤Î¾ì¹ç¤Ë£²¹ÔÌܤΥ³¥Þ¥ó¥É¤¬¼Â¹Ô¤µ¤ì¤Æ¡¤arg ¥³¥Þ¥ó¥É¤¬¿·
¤·¤¯¤Ä¤¯¤é¤ì¤ë¡£
-
¥³¥Þ¥ó¥É arg ¤¬¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¸ºß¤·¤Ê¤¤
- ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë¥³¥Þ¥ó¥Éarg ¤¬ arg.c ¤è¤ê¤â¸Å¤¤
¤¿¤¯¤µ¤ó¥×¥í¥°¥é¥à¤ò½ñ¤¯¤È¤¤Ë¤Ï¡¤¤º¤é¤º¤é¤³¤Î¤è¤¦¤Êµ½Ò¤òMakefile¤ËÊÂ
¤Ù¤Æ¤ª¤±¤Ð¤è¤¤¡£Makefile Ãæ¤Ç¡¤ÊÑ¿ô¤ÎÄêµÁ¤â¤Ç¤¤ë¡£
ÊÑ¿ô¤ÎÃͤ˥¢¥¯¥»¥¹¤¹¤ë¤È¤¤Ë¤Ï¡¢ÊÑ¿ô̾¤ÎƬ¤Ëµ¹æ$¤ò¤Ä¤±¤ë¡£
GCC = gcc #ÊÑ¿ôGCC¤ËÃÍgcc¤òÂåÆþ
CFLAGS=-Wall #ÊÑ¿ôCFLAGS¤ËÃÍ-Wall¤òÂåÆþ
Loadlibs=-lm #¥é¥¤¥Ö¥é¥ê´Ø¿ô¤¬É¬Íפʤ¤¤È¤¤Ï±¦ÊդˤϤʤˤâ½ñ¤«¤Ê¤¯¤Æ¤è¤¤
main: main.o mycat.o # main ¤Ï main.o ¤È mycat.o ¤«¤éºî¤ë
${GCC} ${CFLAGS} -o $@ main.o mycat.o ${Loadlibs}
arg: arg.o # arg ¤Ï arg.o ¤«¤éºî¤ë
${GCC} ${CFLAGS} -o $@ $@.o ${Loadlibs}
main.o: mycat.h main.c
${GCC} ${CFLAGS} -c -o $@ main.c
mycat.o: mycat.c
${GCC} ${CFLAGS} -c -o $@ mycat.c
clean:
rm -f *~ *.o
ºÇ½é¤Î3¹Ô¤Ï¥³¥ó¥Ñ¥¤¥é¤ò¤¢¤é¤ï¤¹ÊÑ¿ôGCC, ¥³¥ó¥Ñ¥¤¥é¤ËÍ¿¤¨¤ë¥ª¥×¥·¥ç¥ó
CFLAGS, ¥ê¥ó¥¯¤¹¤ë¥é¥¤¥Ö¥é¥êLoadlibs¤ÎÀßÄê¡£
³Æ¹Ô°Ê¹ß¤Î ${GCC}, ${CFLAGS}, ${Loadlibs}¤Ï¡¤
¤³¤³¤ÇÀßÄꤵ¤ì¤¿ÃͤËÃÖ´¹¤µ¤ì¤ë¡£5,6 ¹ÔÌܤÎ
main: main.o mycat.o
${GCC} ${CFLAGS} -o $@ main.o mycat.o ${Loadlibs}
¤Ç¡¤$@ ¤Ï¡¤Á°¤Î¹Ô¤Î`:` ¤Ç¶èÀÚ¤é¤ì¤¿º¸¤Îʸ»ú(¤³¤Î¾ì¹ç¤Ïmain)¤ò¤µ¤¹ÊÑ¿ô¡£
make main¤ò¼Â¹Ô¤¹¤ë¤È¡¤Makefile Ãæ¤Îµ½Ò¤Î¤¦¤Á¡¤
main ¤Ë´Ø¤¹¤ëʸ¤è¤ê²¼¤ÎÉôʬ¤Îµ½Ò¤«¤é main.o ¤È mycat.o
¤Îºî¤êÊý¤¬»²¾È¤µ¤ì¡¤¤½¤ì¤¬¼«Æ°Åª¤Ë¼Â¹Ô¤µ¤ì¤ë¡£
main.o ¤Ë´Ø¤¹¤ë³ºÅö²Õ½ê¤ò¸«¤ë¤È¡¤main.o ¤Ï¡¤mycat.h, main.c ¤Ë°Í¸¤·¤Æ¤¤
¤ë¤³¤È¤¬¤ï¤«¤ë¡£¤è¤Ã¤Æ¡¤main.o ¤¬Ìµ¤¤¾ì¹ç¤ä¡¤mycat.h ¤â¤·¤¯¤Ï main.c ¤¬
main.o ¤è¤ê¿·¤·¤¤¾ì¹ç¤Ë¤Ï¡¤¿·¤·¤¯ main.o ¤¬ºî¤é¤ì¤ë¡£
¤Þ¤¿¡¤¾åµ Makefile ¤ÎÎã¤Î clean ¤È¤¤¤¦¹àÌÜÀßÄê¤Ë¤è¤Ã¤Æ¡¤
$ make clean
¤ò¼Â¹Ô¤¹¤ë¤È¡¤¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë(*.o)¤ä¡¤¥Ð¥Ã¥¯¥¢¥Ã¥×¥Õ¥¡¥¤¥ë
*~ ¤¬¾Ãµî¤µ¤ì¤ë¡£
¤³¤Î¤è¤¦¤Ë¡¤Makefile¤Ïñ¤Ë¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ë¤À¤±¤Ç¤Ê¤¯¡¤
¥Õ¥¡¥¤¥ë¤Î¾Ãµî¡¤¥³¥Ô¡¼¤½¤Î¾¡¤¤µ¤Þ¤¶¤Þ¤Ë»È¤¦¤³¤È¤¬¤Ç¤¤ë¡£
Àè¤ÎÎã¤Ï°Ê²¼¤Î¤è¤¦¤Ë½ñ¤Ä¾¤¹¤³¤È¤¬¤Ç¤¤ë¡£
¤¿¤¯¤µ¤ó¤Î¥×¥í¥°¥é¥à¤Î¤¿¤á¤ÎMakefile¤ò½ñ¤¯¤È¤¤Ë¤Ï¤³¤Á¤é¤Î¤Û¤¦¤¬³Ú¡£
GCC = gcc
CFLAGS=-Wall
Loadlibs=
main: main.o mycat.o
${GCC} ${CFLAGS} -o $@ main.o mycat.o ${Loadlibs}
arg: arg.o
${GCC} ${CFLAGS} -o $@ $@.o ${Loadlibs}
main.o: mycat.h main.c
.c.o :
${GCC} ${CFLAGS} -c -o $@ $<
clean:
rm -f *~ *.o
.c.o¤È½ñ¤¤¤¿¥¨¥ó¥È¥ê¡¼¤Ï*.c¤«¤é*.o¤òºî¤ë°ìÈÌŪ¤Ê
ºî¤êÊý¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¡£
Î㤨¤Ð mycat.o ¤Ïmycat.c¤«¤éºî¤é¤ì¤ë¤¬¡¢¤½¤Îºî¤êÊý¤Ï.c.o¤¬»²¾È
¤µ¤ì¤Æ°Ê²¼¤Î¤è¤¦¤Ë²ò¼á¤µ¤ì¤ë¡£
mycat.o : mycat.c
${GCC} ${CFLAGS} -c -o $@ $<
¤³¤³¤Ç$@ ¤Ï°ì¹ÔÌܤΠ: ¤Îº¸¤Î mycat.o ¤Ë¡¤$< ¤Ï : ¤Î±¦¤Î
mycat.c¤ËÃÖ´¹¤µ¤ì¡¤mycat.o ¤ò¤Ä¤¯¤ë½èÍý¤¬¼Â¹Ô¤µ¤ì¤ë¡£
main.o¤Ïmycat.h ¤È main.c¤Ë°Í¸¤¹¤ë¤³¤È¤¬µºÜ¤µ¤ì¤Æ¤¤¤ë¤¬¡¢¤½¤ÎºîÀ®Êý
Ë¡¤Ï¶ñÂÎŪ¤Ë½ñ¤«¤ì¤Æ¤Ê¤¤¤Î¤Ç.c.o¤¬»²¾È¤µ¤ì¤ë¡£
B ¥×¥ê¥×¥í¥»¥Ã¥µ
¥×¥ê¥×¥í¥»¥Ã¥µ¤È¤Ï¡¢C¸À¸ìÅù¤Î¥×¥í¥°¥é¥à¤Î¥³¥ó¥Ñ¥¤¥ëÁ°¤ËÁ°½èÍý¤ò¹Ô¤¦¤¿
¤á¤Î´Ê°×¤Ê¥×¥í¥°¥é¥à¸À¸ì¤Ç¤¢¤ë¡£
B.1 ¥Þ¥¯¥íÄêµÁ
#define ¥Þ¥¯¥í̾ ÃÖ´¹Ê¸»úÎó
#define¤òÍѤ¤¤Æ¡¢Ê¸»úÎó¤ÎÃÖ´¹¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¡£
#define MAX 100
¤È½ñ¤±¤Ð¡¢¤³¤Î¹Ô¤è¤ê²¼¤ÎMAX¤È¤¤¤¦Ê¸»úÎó¤Ï¡¢¥³¥ó¥Ñ¥¤¥ëÁ°¤Ë
100¤ËÃÖ¤´¹¤¨¤é¤ì¤ë¡£
°Ê²¼¤ÏÎã¡£
#define MAX 10
int main(void)
{
int i;
char buf[MAX];
for (i=0;i<MAX;i++) buf[i]=0;
}
B.2 ¥Þ¥¯¥í´Ø¿ôÄêµÁ
¥Þ¥¯¥íÄêµÁ¤ò»È¤Ã¤Æ´Ø¿ôÅù¤ÎÄêµÁ¤â¤Ç¤¤ë¡£
-
°ú¿ôx¤ÎÆó¾è¤ò·×»»¤¹¤ë¥Þ¥¯¥íÄêµÁÎã
#define sqr(x) ((x)*(x))
()¤¬¤Ê¤¼É¬Íפ«¤Ï³Æ¼«¹Í¤¨¤è¡£
- 2¤Ä¤Îʸ»ú¤ÎÂ礤¤Êý¤òÊÖ¤¹¥Þ¥¯¥í´Ø¿ôÄêµÁÎã
#define maxof(x,y) ((x>y)?x:y)
- Í¿¤¨¤¿²ó¿ô¥ë¡¼¥×¤ò¤¹¤ë¥Þ¥¯¥í´Ø¿ôÄêµÁÎã
#define loop(n) for(i=0;i<n;++i)
¤¿¤À¤·¡¢¤¢¤é¤«¤¸¤á int i;¤¬Àë¸À¤µ¤ì¤Æ¤¤¤ë¤³¤È¤¬É¬Íס£C++¤Ê¤éÊÑ
¿ô¤Î¶É½êÄêµÁ¤âOK¤Ê¤Î¤Ç¡¢°Ê²¼¤Î¤è¤¦¤Ë¤â½ÐÍè¤ë¡£
#define loop(n) for(int i=0;i<n;++i)
- Àè¤ÎÎã¤Ç¡¢¥ë¡¼¥×¤ÎÊÑ¿ô̾¤âÍ¿¤¨¤ë¤è¤¦¤Ë¤·¤¿Îã
#define loop(i,n) for(i=0;i<n;++i)
¥Þ¥¯¥í´Ø¿ôÄêµÁ¤Ç¤Ï¡¢°ú¿ô¤Î·¿¤ò°Õ¼±¤·¤Ê¤¯¤Æ¤¤¤¤¤Î¤ÇÊØÍø¡£
B.3 ¾ò·ïʬ´ô
#ifdef ¥Þ¥¯¥í̾
...
#elif
...
#endif
#ifdef¤òÍѤ¤¤Æ¡¢¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì½ê¤ÎÀÚÂØ¤¨¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤¤ë¡£
°Ê²¼¤ÎÎã¤Ç¤Ï¡¢¥Þ¥¯¥íÊÑ¿ôDEBUG¤òÄêµÁ¤·¤Æ¤¤¤ë¤È¤¤Ë¤Ï¡¢"¥Ç¥Ð¥Ã¥°Ãæ"¤Èɽ
¼¨¤µ¤ì¤ë¡£
#define DEBUG
int main(void)
{
#ifdef DEBUG
printf("¥Ç¥Ð¥Ã¥°Ãæ);
#endif
}
¤³¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¥Ç¥Ð¥Ã¥°Ãæ¤Ë¤¤¤í¤ó¤Ê¾ðÊó¤òɽ¼¨¤¹¤ë¤³¤È¤â¤Ç¤
¤ë¡£¤Þ¤¿¡¢¤è¤¯»÷¤¿¡¢¤Ç¤â¾¯¤·°ã¤¦¥³¥Þ¥ó¥É¤òºî¤ê¤¿¤¤¤È¤¤Ë¤âÊØÍø¡£
¾ò·ïʬ´ô¤ËÍѤ¤¤é¤ì¤ë¥Þ¥¯¥íÊÑ¿ô¤Ë¤Ï¡¢¾åµ¤ÎÎã¤Î¤è¤¦¤ËÃÖ´¹Ê¸»úÎó¤òÍ¿¤¨¤Æ
¤Ê¤¯¤Æ¤â¤è¤¤¡£
¤¢¤ë¥Þ¥¯¥íʸ»ú¤¬ÄêµÁ¤µ¤ì¤Æ¤Ê¤¤¾ì¹ç¤Ë¤Î¤ß¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤¤Éôʬ
¤Ï#ifndef¤ò»È¤¦¡£
#ifndef ¥Þ¥¯¥í̾
... //»ØÄꤷ¤¿¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¤¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ëÉôʬ
#endif
¤µ¤é¤Ë¥Þ¥¯¥íÊÑ¿ô¤ÎÃͤ˱þ¤¸¤¿Ê¬´ô¤â²Äǽ¤Ç¤¢¤ë¡£
#if ¥Þ¥¯¥í̾==ÃÍ1
...
#elif ¥Þ¥¯¥í̾==ÃÍ2
...
#else
...
#endif
C ¥Ñ¥¤¥×
UNIX¾å¤Ç¡¤¤¢¤ë¥Õ¥¡¥¤¥ë(Î㤨¤Ðdata.txt)¤ÎÃæ¿È¤òless¤Ç¸«¤¿¤±¤ì¤Ð¡¤
$ less data.txt
¤È¤¹¤ì¤Ð¤è¤¤¡¥less ¤ÏC¸À¸ì¤Ç½ñ¤«¤ì¤Æ¤¤¤ëUNIX¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡¥
¾å¤ÎÎã¤Î¤è¤¦¤Ë°ú¿ô¤È¤·¤Æ¥Õ¥¡¥¤¥ë̾¤òÅϤ¹¤Ê¤é¡¤main´Ø¿ô¤Î°ú¿ô¤òÍѤ¤¤ì¤Ð
¤è¤¤¡¥
ƱÍͤε¡Ç½¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡¤¥Ñ¥¤¥×(¡ÖUNIX¤Î´ðËÜÁàºî¡×»²¾È)¤òÍѤ¤¤Æ¡¤
$ cat data.txt |less
¤È¤¹¤ë¤³¤È¤â¤Ç¤¤ë¡¥
cat ¥³¥Þ¥ó¥É¤Ï data.txt ¤òɸ½à½ÐÎϤËɽ¼¨¤¹¤ë¥³¥Þ¥ó¥É¤Ç¤¢¤ë¡¥
¾å¤ÎÎã¤Ç¤Ï¡¤¤³¤Îɸ½à½ÐÎϤؤνÐÎϤò
less ¤¬¼õ¤±¼è¤Ã¤Æ½èÍý¤·¤Æ¤¤¤ë¡¥
¤â¤¦¾¯¤·Àµ³Î¤Ë¸À¤¦¤È¡¤¥Ñ¥¤¥×¤Ïcat¤«¤é¤Îɸ½à½ÐÎϤò less ¥³¥Þ¥ó¥É¤ËÂФ¹
¤ëɸ½àÆþÎϤËÀÚÂØ¤¨¤Æ¤¤¤ë¡¥
¤³¤Î¾ì¹çless¤Ïɸ½àÆþÎϤ«¤édata.txt¤ÎÃæ¿È¤òÆÉ¤ß¹þ¤ó¤Ç¤¤¤ë¤³¤È¤Ë¤Ê¤ë¡¥
¤È¤¤¤¦¤ï¤±¤Ç¡¤¥Ñ¥¤¥×½ÐÎϤò¼õ¤±¼è¤ë¤³¤È¤¬¤Ç¤¤ë¥×¥í¥°¥é¥à¤òC¸À¸ì¤Çºî¤ë
¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¤¹¤ì¤Ð¤è¤¤¡¥
....
int main(int argc, char **argv)
{
char *filename; /* NULL ¤Ê¤é¥Õ¥¡¥¤¥ë»ØÄê¤Ê¤·¤È¤·¤Þ¤¹ */
FILE *fp;
filename=argv[1]; /* 2¤Ä¤á¤Î°ú¿ô¤¬¥Õ¥¡¥¤¥ë̾¤Î¤È¤ */
....
if ( filename == NULL ) { /* ¥Õ¥¡¥¤¥ë»ØÄê¤Ê¤· */
fp = stdin;
} else { /* ¥Õ¥¡¥¤¥ë»ØÄꤢ¤ê */
fp = fopen( filename, "r" );
if ( fp == NULL ) {
fprintf( stderr, "'%s'¤¬ÆÉ¤ß¹þ¤á¤Þ¤»¤ó.\n", filename );
exit(1); /* °Û¾ï½ªÎ» */
}
}
....
}
D ¤³¤Î¥É¥¥å¥á¥ó¥È¤ÎÃøºî¸¢¤Ë¤Ä¤¤¤Æ
-
ËܹƤÎÃøºî¸¢¤ÏÀ¾°æ½ßnishii@sci.yamaguchi-u.ac.jp¤¬Í¤·¤Þ¤¹¡£
- Èó¾¦ÍÑÌÜŪ¤Ç¤ÎÊ£À½¤Ïµö²Ä¤·¤Þ¤¹¤¬¡¤½¤Àµ¤ò²Ã¤¨¤¿¾ì¹ç¤Ïɬ¤º½¤ÀµÅÀ¤ª¤è¤Ó²ÃÉ®¼Ô¤Î
»á̾¡¦Ï¢ÍíÀ衤½¤Àµ¤·¤¿ÆüÉÕ¤òÌÀµ¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿ËÜÃøºî¸¢É½¼¨¤Îºï½ü¤Ï¹Ô¤Ã
¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£
- ËÜ¹Æ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë´Ö°ã¤¤Åù¤Ë¤è¤ê¤Ê¤ó¤é¤«¤ÎÈï³²¤òÈï¤Ã¤¿¤È¤·¤Æ¤âÃø¼Ô¤Ï°ìÀÚ
ÀÕǤ¤òÉ餤¤Þ¤»¤ó¡£
´Ö°ã¤¤Åù¤ÎÏ¢Íí¤ä²ÃÉ®½¤ÀµÍ×˾Åù¤ÎÏ¢Íí¤ÏÂç´¿·Þ¤Ç¤¹¡£
This document was translated from LATEX by
HEVEA.