` ¥º. È­ÀÏ ÀÔÃâ·Â ÀϹÝÀûÀ¸·Î È­ÀÏ Ã³¸®¶ó ÇÏ¸é »õ·Î¿î È­ÀÏÀ» ¸¸µé°í È­ÀÏÀÇ ³»¿ëÀ» ÀÐ°í ¾²´Â °ÍÀ» ÀǹÌÇϴµ¥, C¿¡¼­´Â À̸¦ ±âº» ±â´ÉÀ¸·Î Á¦°øÇÏÁö ¾ÊÀ¸¸ç Ç¥ÁØ ¶óÀ̺귯¸® ÇÔ¼öµéÀ» ÅëÇØ ¼öÇàÇϵµ·Ï ÇÏ°í ÀÖ´Ù. ÀÌ ¶óÀ̺귯¸® ÇÔ¼ö¿¡´Â µÎ °¡Áö Á¾·ù°¡ Àִµ¥, À̸¥¹Ù °í¼öÁØÀÇ È­ÀÏ Ã³¸® ÇÔ¼öµé·Î ÀÌ°Í À» »ç¿ëÇÏ¸é ´Ù¾çÇÑ Æ÷¸ËÀ¸·Î ÀÔÃâ·ÂÀ» ¼öÇàÇÒ ¼ö ÀÖÀ¸³ª È¿À²ÀÌ ¶³¾îÁö´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ¹Ý¸é¿¡ Àú¼öÁØÀÇ ÀÔÃâ·Â ÇÔ¼ö¸¦ »ç¿ëÇϸé Æ÷¸ËÀ» ÁöÁ¤ÇÒ ¼ö ¾ø´Â ´ÜÁ¡ÀÌ ÀÖÀ¸³ª ¸Å¿ì È¿À²ÀûÀ¸·Î ÀÔÃâ·Â À» ¼öÇàÇÏ°Ô µÈ´Ù. µû¶ó¼­ ½Ç¹« ÇÁ·Î±×·¥¿¡¼­´Â ¿ÀÈ÷·Á Àú¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â ÇÔ¼öµéÀ» ¼±È£ÇÏ´Â °æ¿ì°¡ ¸¹´Ù. < °í¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â ÇÔ¼öµé > °í¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â¿¡¼­´Â FILEÀ̶ó´Â ±¸Á¶¸¦ °øÅëÀûÀ¸·Î »ç¿ëÇÏ°í ÀÖ´Ù. ÀÌ´Â stdio.h¿¡ ´ÙÀ½ °ú °°ÀÌ Á¤ÀǵǾî ÀÖÀ¸¸ç, µû¶ó¼­ °í¼öÁØÀÇ È­ÀÏ ÀÔÃâ·ÂÀ» ÀÌ¿ëÇϱâ À§Çؼ­´Â ¹Ýµå½Ã stdio.h È­ ÀÏÀ» Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ typedef struct { ¦¢ ¦¢ short level; /* fill/empty level of buffer */ ¦¢ ¦¢ unsigned flags; /* File status flags */ ¦¢ ¦¢ char fd; /* File descriptor */ ¦¢ ¦¢ unsigned char hold /* Ungetc char if no buffer */ ¦¢ ¦¢ short bsize; /* Buffer size */ ¦¢ ¦¢ unsigned char *buffer; /* Data transfer buffer */ ¦¢ ¦¢ unsigned char *curp; /* Current active pointer */ ¦¢ ¦¢ unsigned istemp; /* Temporary file indicator */ ¦¢ ¦¢ short token; /* Used for validity checking */ ¦¢ ¦¢ } FILE; /* This is the FILE object */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ È­ÀÏÀ» »ç¿ëÇϱâ À§Çؼ­´Â ¸ÕÀú È­ÀÏÀ» ¿©´Â °ÍÀÌ ÇÊ¿äÇϸç À̶§ ´ÙÀ½°ú °°ÀÌ fopenÇÔ¼ö¸¦ »ç¿ë ÇÏ¿©¾ß ÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ FILE *fp; ¦¢ ¦¢ fp = fopen( È­ÀÏ À̸§", ¸ðµå ); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×·¯¸é fopenÀº ÁöÁ¤ÇÑ È­ÀÏ À̸§ÀÇ È­ÀÏÀ» ã¾Æ À̸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇüÅ·Π¿­°í ÀÌ È­ÀÏ¿¡ ´ëÇÑ FILE ±¸Á¶¸¦ Çϳª ¸¸µç ÈÄ ÀÌ ±¸Á¶¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ °è»ê °á°ú·Î µ¹·ÁÁÖ°Ô µÈ´Ù. µÎ¹ø°ÀÇ ¸ðµå´Â ¾ÕÀÇ È­ÀÏÀ» ¾î¶² ÇüÅ·Π»ç¿ëÇÒ °ÍÀΰ¡¸¦ ³ªÅ¸³»´Â °ÍÀ¸·Î ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¨¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ¸ðµå ¦¢ ÀÇ ¹Ì ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ "r" ¦¢ È­ÀÏÀ» Àбâ Àü¿ëÀ¸·Î ¿¬´Ù. ÇØ´ç È­ÀÏÀÌ ÀÌ¹Ì Á¸ÀçÇØ ÀÖ¾î¾ß ÇÑ´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ "w" ¦¢ È­ÀÏÀ» ¾²±â Àü¿ëÀ¸·Î ¿¬´Ù. ÀÌ¹Ì Á¸ÀçÇÏ¸é ±× È­ÀÏÀÇ ³»¿ëÀº Á¦°ÅµÇ¸ç, ¾øÀ¸¸é ¦¢ ¦¢ ¦¢ »õ·Î¿î È­ÀÏÀÌ ÀÚµ¿À¸·Î ¸¸µé¾îÁø´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ "a" ¦¢ È­ÀÏÀ» ¾²±â Àü¿ëÀ¸·Î ¿¬´Ù. È­ÀÏÀÇ ³»¿ëÀÌ ÀÖ´Â °æ¿ì ±× ³»¿ëÀº Áö¿öÁöÁö ¾ÊÀ¸¸ç ¦¢ ¦¢ ¦¢ È­ÀÏÀÇ ¸Ç ³¡À¸·Î ÀÚµ¿À¸·Î À̵¿ÇØ ¸Ç ³¡¿¡ µ¡ºÙ¿© ¾µ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ¸¸¾à ÇØ´ç ¦¢ ¦¢ ¦¢ È­ÀÏÀÌ ¾øÀ¸¸é »õ·Î¿î È­ÀÏÀÌ ÀÚµ¿À¸·Î »ý¼ºµÈ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ "r+" ¦¢ È­ÀÏÀ» Àбâ¿Í ¾²±â µÎ °¡Áö ¸ñÀûÀ¸·Î ¿¬´Ù. ÇØ´ç È­ÀÏÀÌ ¾øÀ¸¸é ¿¡·¯°¡ ³­´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ "w+" ¦¢ È­ÀÏÀ» Àбâ¿Í ¾²±â µÎ °¡Áö ¸ñÀûÀ¸·Î ¿¬´Ù. ÇØ´ç È­ÀÏÀÌ ÀÖÀ¸¸é ±× ³»¿ëÀº Áö¿ö ¦¢ ¦¢ ¦¢ Áö¸ç ¾øÀ¸¸é »õ·Î¿î È­ÀÏÀÌ ¸¸µé¾îÁø´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ "a+" ¦¢ È­ÀÏÀ» Àбâ¿Í ¾²±â µÎ °¡Áö ¸ñÀûÀ¸·Î ¿¬´Ù. ÇØ´ç È­ÀÏÀÌ ÀÖÀ¸¸é ±× È­ÀÏ ¸Ç ³¡À¸ ¦¢ ¦¢ ¦¢ ·Î À̵¿ÇÏ¿© ±× À§Ä¡ºÎÅÍ Àбâ¿Í ¾²±â°¡ ÀÌ·ç¾îÁö°Ô µÇ¸ç, È­ÀÏÀÌ ¾øÀ¸¸é »õ·Î¿î ¦¢ ¦¢ ¦¢ È­ÀÏÀÌ »ý¼ºµÈ´Ù. ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦ª¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¾²±â¿ë("w")À» »ç¿ëÇÒ ¶§, ÀÌ¹Ì Á¸ÀçÇÏ´Â È­ÀÏÀ» ¿­·Á°í ÇÏ¸é ±× È­ÀÏÀÌ ¾ø¾îÁ®¹ö¸®¹Ç·Î »ç¿ë½Ã ¿¡ ÁÖÀǸ¦ ÇØ¾ß ÇÑ´Ù. ±×¸®°í Ãß°¡¿ë("a")Àº È­ÀÏÀÇ ³¡¿¡ µ¥ÀÌÅ͸¦ Ãß°¡Çϱâ À§Çؼ­ »ç¿ëÇÏ¸ç °» ½Å¿ë("+")Àº È­ÀÏÀ» ¿­¾î¼­ Àбâ¿Í ¾²±â¸¦ ÇÑ È­ÀÏ¿¡ ÇѲ¨¹ø¿¡ ÇÒ ÇÊ¿ä°¡ ÀÖÀ» ¶§ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î test.txt¶õ È­ÀÏÀÇ ³»¿ëÀ» Àбâ À§Çؼ­´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fp = fopen("test.txt", "rb"); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¿­±â Çü½Ä¿¡´Â ÀϹÝÀûÀ¸·Î ÅؽºÆ® È­ÀÏ("t")À̳ª ÀÌÁø È­ÀÏ("b")ÀÌ µé¾î°¡¾ß Çϴµ¥ »ý·«À» ÇÏ°Ô µÇ¸é ÅؽºÆ® È­ÀÏ Çü½ÄÀÌ µÈ´Ù. test.txt¶õ È­ÀÏÀ» Áö¿ì°í »õ·Î ¾²°í ½ÍÀ» ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fp = fopen("test.txt", "w"); /* »ý·«ÇßÀ¸¹Ç·Î ÅؽºÆ® È­ÀÏÀÌ µÈ´Ù */ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¹Ý¸é¿¡ test.txt¶õ È­ÀÏÀ» Áö¿ìÁö ¾Ê°í È­ÀÏÀÇ ³¡¿¡ µ¡ºÙÀÌ°í ½ÍÀ» ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fp = fopen("test.txt", "a"); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ È­ÀÏ¸í¿¡´Â µå¶óÀ̺ê¿Í Æнº¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. Æнº¸¦ Ç¥½ÃÇÒ ¶§´Â ¿ª½½·¡½¬('\')¸¦ ÀÌÁß('\\')À¸ ·Î ÇØ¾ß Çϴµ¥, ±×·¸Áö ¾ÊÀ¸¸é È®Àå¿­ÀÌ µÇ¾î ¾û¶×ÇÑ °á°ú¸¦ °¡Á®¿À°Ô µÇ¹Ç·Î ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ "c:\\work\\test.txt" ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ È­ÀÏÀ» ¿­´Ù°¡ ¿¡·¯°¡ ¹ß»ýÇϸé(¿¹¸¦ µé¾î ÀбâÀü¿ëÀ¸·Î È­ÀÏÀ» ¿­ ¶§ È­ÀÏÀÌ µð½ºÅ©»ó¿¡ ¾ø°Å ³ª, È­ÀÏÀ» ¿­·Á´Â µå¶óÀ̺꿡 µð½ºÅ©°¡ µé¾îÀÖÁö ¾Ê´Ù°Å³ª ÇÒ ¶§ ¹ß»ýÇÑ´Ù) fopenÇÔ¼ö´Â NULL °ªÀ» °è»ê °á°ú·Î »êÃâÇÑ´Ù. µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ Ç×»ó Á¶»çÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ if ((fp = fopen("test.txt", "rb")) == NULL) { ¦¢ ¦¢ printf("File open error.\n"); ¦¢ ¦¢ exit(-1); /* exitÇÔ¼ö¸¦ ¸¸³ª¼­ ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù */ ¦¢ ¦¢ } ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×¸®°í fp ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ Àִµ¥, CÀÇ ÀÔÃâ·Â¿¡¼­´Â µ¥ÀÌÅ͸¦ Çϳª ¶Ç´Â ±× ÀÌ»ó ÀÇ ¹°¸®Àû(½ºÅ©¸°À̳ª ÇÁ¸°ÅÍ, Ç÷ÎÅÍ µîÀÇ ÄÄÇ»ÅÍ¿¡ ¿¬°áµÉ ¼ö ÀÖ´Â ¸ðµç)ÀåÄ¡·Î ÁöÇâµÇ´Â ½ºÆ® ¸²(stream)ÀÇ ÇüÅ·Π³ªÅ¸³»±âµµ ÇÑ´Ù. ´ÙÀ½ÀÇ Ç¥´Â ½ºÆ®¸²À» ÀÌ¿ëÇÑ Ç¥ÁØ ÀÔÃâ·Â ÀåÄ¡Àε¥, stdio.hÇì´õ¿¡ Á¤ÀǵǾî ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ #define stdin (&_streams[0]) ¦¢ ¦¢ #define stdout (&_streams[1]) ¦¢ ¦¢ #define stderr (&_streams[2]) ¦¢ ¦¢ #define stdaux (&_streams[3]) /* º¸Á¶ ÀÔÃâ·Â ÀåÄ¡, º¸Åë COM1¿¡ ¿¬°áµÇ¾î ÀÖ´Ù */ ¦¢ ¦¢ #define stdprn (&_streams[4]) /* Ç¥ÁØ ÇÁ¸°ÅÍ ÀåÄ¡, LPT1¿¡ ¿¬°áµÇ¾î ÀÖ´Ù */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ stdinÀº Ç¥ÁØ ÀÔ·Â ÀåÄ¡·Î ÀÔ·ÂÀ» ¹Þ¾Æ µéÀÏ ¶§ È­ÀÏÀ» »ç¿ëÇÏÁö ¾Ê°í scanf³ª getchar µîÀ» »ç ¿ëÇÏ¿© ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÌ´ø °÷À» ÀǹÌÇϴµ¥, ÀÌ´Â º¸Åë »ç¿ëÇÏ°í ÀÖ´Â ÄÄÇ»ÅÍÀÇ Å°º¸µå°¡ µÈ´Ù. ¹Ý¸é¿¡ stdoutÀº Ç¥ÁØ Ãâ·Â ÀåÄ¡·Î printf³ª putchar¸¦ »ç¿ëÇÏ¿© Ãâ·ÂÇßÀ» ¶§ ±× Ãâ·ÂÀÌ ³ª°¡´Â °÷À» ÀǹÌÇϸç, ÀÌ´Â ÀϹÝÀûÀ¸·Î »ç¿ëÇÏ°í ÀÖ´Â ÄÄÇ»ÅÍÀÇ È­¸éÀÌ µÈ´Ù. stderrÀº Ç¥ÁØ ¿¡·¯Ãâ·Â ÀåÄ¡¸¦ ¸»Çϸç, ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª°¡´Â °÷À¸·Î Ç¥ÁØ Ãâ·Â°ú À¯»çÇÏ°Ô À̵µ ¿ª½Ã º¸Åë »ç¿ëÇÏ°í ÀÖ ´Â ÄÄÇ»ÅÍÀÇ È­¸éÀÌ µÈ´Ù. Unix¿¡¼­´Â Ç¥ÁØ Ãâ·Â°ú Ç¥ÁØ ¿¡·¯°¡ ´Ù¸£Áö¸¸ DOS¿¡¼­´Â ÀÌ µÑÀ» ±¸ º°ÇÏÁö ¾Ê±â ¶§¹®¿¡ ½ÇÁ¦·Î Â÷ÀÌ°¡ ¾ø°Ô µÈ´Ù. µû¶ó¼­ °í¼öÁØÀÇ È­ÀÏ ÀÔÃâ·ÂÀ» »ç¿ëÇÒ ¶§¿¡ Å°º¸ µå·Î ºÎÅÍ ÀÔ·ÂÀ» ¹Þ¾ÆµéÀÌ°í ½ÍÀ¸¸é fp ´ë½Å¿¡ stdinÀ̶õ À̸§À» »ç¿ëÇÏ¸é µÇ°í È­¸é¿¡ Ãâ·ÂÇÏ°í ½ÍÀ¸¸é ¿ª½Ã fp¶õ À̸§ ´ë½Å¿¡ stdoutÀ̳ª stderrÀ» »ç¿ëÇÏ¸é µÈ´Ù. È­ÀÏÀ» ¿­¾úÀ¸¸é Àаųª ½á¾ß Çϴµ¥, È­ÀÏ·Î ºÎÅÍ ÀоîµéÀÌ°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½ÀÇ fscanfÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î µÎ °³ÀÇ Á¤¼ö°ªÀ» test.dat¶õ È­ÀϷκÎÅÍ ÀоîµéÀÌ°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °° ÀÌ ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ FILE *fp; ¦¢ ¦¢ int i, j; ¦¢ ¦¢ if ((fp = fopen("test.dat", "r")) == NULL) { ¦¢ ¦¢ printf("Error: Cannot open test.dat\n"); ¦¢ ¦¢ return (1); ¦¢ ¦¢ } ¦¢ ¦¢ fscanf(fp,"%d%d",&i,&j); ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ½ÇÁ¦·Î Áö±Ý±îÁö »ç¿ëÇØ ¿Â scanfÇÔ¼ö´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °®´Â´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fscanf(stdin,"Æ÷¸Ë ,º¯¼ö ¸®½ºÆ®); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº fscanf¸¦ »ç¿ëÇÏ´Â ÇÑ ¿¹ÀÌ´Ù. #include main() { FILE *fp; /* +---------------+ */ int i; /* | DATA.DAT | */ int no = 0; /* | 100 | */ long int sum = 0l; /* | 78 | */ if ((fp = fopen("data.dat", "r")) == NULL) { /* | 52 | */ printf("Error: Cannot open data.dat\n"); /* | 34 | */ return (1); /* | 86 | */ } /* | 32 | */ while (fscanf(fp,"%d",&i) != EOF) { /* | 16 | */ sum += i; /* | 82 | */ ++no; /* | 99 | */ } /* | 75 | */ if (no == 0) /* +---------------+ */ printf("No data.\n"); else { printf("Total %d numbers.\n",no); printf("Sum = %ld\n",sum); printf("Average = %.2f\n",(float)sum/(float)no); } fclose(fp); /* È­ÀÏÀ» ¿­¾î¼­ »ç¿ëÇÑ ÈÄ¿¡´Â ¹Ýµå½Ã È­ÀÏÀ» ´Ý¾Æ¾ß ÇÑ´Ù. È­ÀÏÀÇ ´ÝÀ½Àº ¹öÆÛ¿¡ µé¾îÀÖ´ø ³»¿ëÀ» ¸ðµÎ µð½ºÅ©·Î º¸³»¼­ ¹öÆÛ¸¦ ºñ¿ì°í fopen ÇÔ¼ö·Î È­ÀÏÀ» ¿­¾î¼­ µÇµ¹¸² °ªÀ» ¹ÞÀ» ¶§ »ç¿ëÇß´ø Æ÷ÀÎÅ͸¦ Àç»ç¿ë ÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù. fclose ÇÔ¼öÀÇ ÀÎÀÚ´Â fopen ÇÔ¼ö¿¡¼­ µÇµ¹·Á ¹Þ¾Ò´ø Æ÷ÀÎÅÍ°¡ µé¾î°¡°í µÇµ¹¸² °ªÀº ´Ý±â°¡ ¼º°øÀÏ ¶§ 0, ¿¡·¯ÀÏ ¶§ EOF¸¦ µÇµ¹¸°´Ù */ } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>test ³ú Total 10 numbers. Sum = 654 Average = 65.40 scanf ÇÔ¼ö°¡ Ç¥ÁØ ÀÔ·Â ÀåÄ¡(stdin)·Î ºÎÅÍ ÀԷ¹޴ø °ÍÀ» fscanf ÇÔ¼ö´Â È­ÀϷκÎÅÍ Àоî¿À´Â µ¥ »ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int a; ¦¢ ¦¢ long int b; ¦¢ ¦¢ double c; ¦¢ ¦¢ char d[10] = { 0, }; ¦¢ ¦¢ ..... ¦¢ ¦¢ fscanf(fp,"%d %ld %lf %s",&a,&b,&c,d); /* scanf ÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î fscanf ÇÔ¼öÀÇ ¦¢ ¦¢ ÀÔ·Â µ¥ÀÌÅ͵鰣ÀÇ ±¸ºÐÀº °ø¹é¹®ÀÚ(' ', \t, \n µî)·Î ÀÌ·ç¾îÁø´Ù */ ¦¢ ¦¢ /* È­ÀÏ¿¡ ´ÙÀ½°ú °°Àº µ¥ÀÌÅÍ°¡ µé¾îÀÖ´Ù°í °¡Á¤ÇÑ´Ù */ ¦¢ ¦¢ +-+-+-+-+-+-+-+-+-+-+-+-+-+--+--+-+-+-+-+-+-+-+-+-+-+-+--+--+ ¦¢ ¦¢ |5| |4|0|0|0|0| |1|2|.|3|4|\r|\n|H|e|l|l|o| |w|o|r|l|d|\r|\n| ¦¢ ¦¢ +-+-+-+-+-+-+-+-+-+-+-+-+-+--+--+-+-+-+-+-+-+-+-+-+-+-+--+--+ ¦¢ ¦¢ /* À§ÀÇ fscanf ÇÔ¼ö°¡ ½ÇÇàµÇ°í ³ª¸é °¢ º¯¼ö¿¡´Â ´ÙÀ½°ú °°Àº °ªÀÌ µé¾î°¡°Ô µÈ´Ù */ ¦¢ ¦¢ a = 5 ¦¢ ¦¢ b = 40000 ¦¢ ¦¢ c = 12.34 ¦¢ ¦¢ d = "Hello" ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¶Ç getchar¿Í °°ÀÌ ÇÑ ±ÛÀÚ¾¿ È­ÀϷκÎÅÍ ÀоîµéÀÏ ¼öµµ Àִµ¥ À̶§¿¡´Â getc¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ char c; ¦¢ ¦¢ FILE *fp; ¦¢ ¦¢ c = getc(fp); /* fp°¡ °¡¸®Å°´Â È­ÀϷκÎÅÍ ÇÑ ¹®ÀÚ¸¦ Àоî À̸¦ °è»ê °á°ú·Î »êÃâ */ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ µû¶ó¼­ getchar´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °®´Â´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ getc(stdin); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº getc¸¦ »ç¿ëÇÏ¿© DOSÀÇ type°ú °°Àº ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥ÀÇ ÇÑ ¿¹ÀÌ´Ù. #include main(int argc, char *argv[]) { FILE *fp; char c; if (argc == 1) { /* ÀÎÀÚ°¡ ¾øÀ¸¸é */ printf("USAGE : %s filename(1) ...filename(n)\n",*argv); return (1); } while (--argc > 0) { /* ÀÎÀÚ°¡ ÀÖÀ¸¸é */ if ((fp = fopen(*++argv, "r")) == NULL) { printf("Error: Cannot open %s\n",*argv); continue; } printf("\n*** %s ***\n",*argv); while ((c = getc(fp)) != EOF) putchar(c); } fclose(fp); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>fileview \config.sys \autoexec.bat ³ú Áö±Ý±îÁö´Â ÀԷ¿¡ ´ëÇØ ¾Ë¾Æº¸¾Ò´Ù. Ãâ·ÂÀÇ °æ¿ìµµ ¸¶Âù°¡ÁöÀε¥ ´ÙÀ½°ú °°ÀÌ fprintf ÇÔ¼ö¸¦ »ç ¿ëÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fprintf(fp,"Æ÷¸Ë ,º¯¼ö ¸®½ºÆ®); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ µû¶ó¼­ printf´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °®°Ô µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fprintf(stdout,"Æ÷¸Ë ,º¯¼ö ¸®½ºÆ®); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ fprintf¸¦ »ç¿ëÇϸé stdoutÀÌ ¾Æ´Ñ stderrÀ¸·Îµµ Ãâ·ÂÀ» ³»º¸³¾ ¼ö Àִµ¥, À̶§¿¡µµ ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fprintf(stderr,"Æ÷¸Ë ,º¯¼ö ¸®½ºÆ®); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ stderrÀº ¿¡·¯ ¸Þ½ÃÁö¸¦ ³»º¸³»±â À§ÇÑ °ÍÀ̱⠶§¹®¿¡, ¿¡·¯ ¸Þ½ÃÁö´Â À̸¦ ÅëÇØ ³»º¸³»´Â °ÍÀÌ ÁÁ´Ù. ´ÙÀ½ ÇÁ·Î±×·¥Àº sort [-r] file(1) file(2)¿Í °°ÀÌ »ç¿ëÇÏ´Â °ÍÀ¸·Î [ ]´Â »ý·«ÇÒ ¼ö ÀÖ´Â ºÎºÐÀ» ÀǹÌÇϸç file(1)È­ÀÏÀ» ¶óÀÎ ´ÜÀ§·Î Á¤·ÄÇÏ¿© file(2)¿¡ Ãâ·ÂÇϴµ¥ -rÀ» ÁöÁ¤Çϸé Å« ¼ø¼­¿¡¼­ ÀÛ Àº ¼ø¼­·Î Á¤·ÄÇÏ°í, ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÀÛÀº ¼ø¼­¿¡¼­ Å« ¼ø¼­·Î Ãâ·ÂÇÏ´Â °ÍÀÌ´Ù. #include #define REVERSE -1 #define NORMAL 1 #define MAXLINENO 100 #define MAXCNO 80 #define TRUE EOF*-1 main(int argc, char *argv[]) { static char text[MAXLINENO][MAXCNO]; char t[MAXCNO]; FILE *fp1, *fp2; int direction = NORMAL; int no = 0; int i, j; if ((argc != 3 && argc != 4) || (argc == 4 && strcmp(*(argv+1), "-r"))) { fprintf(stderr,"USAGE: %s [-r] filename(1) filename(2)\n",*argv); return (1); } if (argc == 4) { /* -rÀ» ÁÖ¸é ¿ªÀ¸·Î Á¤·Ä */ direction = REVERSE; ++argv; } if ((fp1 = fopen(*++argv, "r")) == NULL) { fprintf(stderr,"Error: Cannot open %s\n",*argv); return (2); } if ((fp2 = fopen(*++argv, "w")) == NULL) { fprintf(stderr,"Error: Cannot create %s\n",*argv); return (3); } while (get_line(fp1, text[no++]) != EOF); for (i = 0; i < no - 2; i++) for (j = i + 1; j < no - 1; j++) if (strcmp(text[i], text[j]) * direction > 0) { strcpy(t, text[i]); strcpy(text[i], text[j]); strcpy(text[j], t); } for (i = 0; i < no - 1; i++) fprintf(fp2,"%s\n",text[i]); fclose(fp1); fclose(fp2); } int get_line(FILE *fp, char *s) { /* È­ÀϷκÎÅÍ ÇÑ ¶óÀÎÀ» ÀоîµéÀÓ */ char *cp = s; /* +--------------------+ */ while ((*s = getc(fp)) != EOF) /* | ( DATA ) | */ if (*s == '\n') { /* | Lee Seung Wook | */ *s = '\0'; /* | Kwon Oh Jin | */ return (TRUE); /* | Oh Jung Pyo | */ } /* | Kim Joon Sik | */ else /* | Yun Young Il | */ ++s; /* | Kwon Oh Chang | */ if (cp == s) /* | Kim Chang Ju | */ return (EOF); /* | Hong Gil Dong | */ *s = '\0'; /* | Kim Young Hoon | */ return (TRUE); /* | Kim Jong Min | */ } /* +--------------------+ */ ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>sort data sdata ³ú C:\TC>type sdata ³ú Hong Gil Dong Kim Chang Ju Kim Jong Min Kim Joon Sik Kim Young Hoon Kwon Oh Chang Kwon Oh Jin Lee Seung Wook Oh Jung Pyo Yun Young Il C:\TC>sort -r data rdata ³ú C:\TC>type rdata ³ú Yun Young Il Oh Jung Pyo Lee Seung Wook Kwon Oh Jin Kwon Oh Chang Kim Young Hoon Kim Joon Sik Kim Jong Min Kim Chang Ju Hong Gil Dong ´ÙÀ½ÀÇ ¿¹Á¦´Â Å°º¸µå·ÎºÎÅÍ ÀԷ¹ÞÀº ¹®Àåµé¿¡ ÁÙ¹øÈ£¸¦ ºÙ¿©¼­ test.txt È­ÀÏ·Î ÀúÀåÇÏ´Â ÀÏÀ» ÇÏ´Â °ÍÀ¸·Î, ÇÁ·Î±×·¥ÀÇ Á¾·á´Â ¾Æ¹« ¹®Àåµµ ÀÔ·ÂÇÏÁö ¾Ê°í ¿£ÅÍÅ°¸¦ Ä¡¸é µÈ´Ù. #include void main(void) { FILE *fp; char str[80]; int line = 0; if ((fp = fopen("test.txt", "w")) == NULL) { printf("File open error ... \n"); exit(-1); } for ( ; ; ) { gets(str); if (str[0] == '\0') break; line++; fprintf(fp,"%3d : %s\n",line,str); } fclose(fp); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>test ³ú Time ³ú can ³ú never ³ú mend. ³ú ³ú C:\TC>type test.txt ³ú 1 : Time 2 : can 3 : never 4 : mend. ¶Ç putchar¿Í °°ÀÌ ÇÑ ±ÛÀÚ¾¿ Ãâ·ÂÇÏ´Â ÇÔ¼öµµ Àִµ¥, ÀÌÀÇ À̸§Àº putcÀÌ´Ù. putc´Â ´ÙÀ½°ú °° Àº ÇüÅ·Π»ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ char c; ¦¢ ¦¢ FILE *fp; ¦¢ ¦¢ putc(c,fp); /* fp°¡ °¡¸®Å°´Â È­ÀÏ¿¡ c°¡ Ãâ·ÂµÇ°Ô µÈ´Ù */ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ µû¶ó¼­ putchar(c)´Â ´ÙÀ½°ú °°Àº Àǹ̸¦ °®´Â´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ putc(c,stdout); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ´ÙÀ½Àº putcÀÇ ÇÑ »ç¿ë¿¹ÀÌ´Ù. #include main() { char c; char fname1[20], fname2[20], fname3[20]; FILE *fp1, *fp2, *fp3; printf("Input the first file name -> "); gets(fname1); printf("Input the second file name -> "); gets(fname2); printf("Input the file name to create -> "); gets(fname3); if ((fp1 = fopen(fname1, "r")) == NULL) { printf("Error : Cannot open %s\n",fname1); exit(-1); } if ((fp2 = fopen(fname2, "r")) == NULL) { printf("Error : Cannot open %s\n",fname2); fclose(fp1); exit(-1); } if ((fp3 = fopen(fname3, "w")) == NULL) { printf("Error : Cannot create %s\n",fname3); fclose(fp1); fclose(fp2); exit(-1); } while ((c = getc(fp1)) != EOF) /* È­ÀϷκÎÅÍ ÇÑÀÚ¾¿ ÀоîµéÀÏ ¶§¿¡´Â getc¸¦, */ putc(c,fp3); /* Ãâ·ÂÇÒ ¶§¿¡´Â putc¸¦ »ç¿ëÇÏ¸é µÈ´Ù */ fclose(fp1); while ((c = getc(fp2)) != EOF) putc(c,fp3); fclose(fp2); fclose(fp3); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- Input the first file name -> \config.sys ³ú Input the second file name -> \autoexec.bat ³ú Input the file name to create -> sysbat.txt ³ú ÀÌ ¹Û¿¡µµ È­ÀÏ¿¡¼­ ÇÑ ±ÛÀÚ¸¦ ÀÔÃâ·ÂÇÏ´Â ÇÔ¼ö·Î fgetc¿Í fputc°¡ ÀÖ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int fgetc(FILE *fp) ¦¢ ¦¢ int fputc(int c, FILE *fp) ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ fgetc ÇÔ¼ö´Â ÁöÁ¤ÇÑ È­ÀÏ¿¡¼­ ÀоîµéÀÎ ¹®ÀÚ¸¦ µÇµ¹¸®°í È­ÀÏ Æ÷ÀÎÅ͸¦ ÇÑ °³ Áõ°¡½ÃŲ´Ù. È­ÀÏ Æ÷ÀÎÅÍ°¡ È­ÀÏÀÇ ³¡¿¡ µµ´ÞÇßÀ» °æ¿ì¿¡´Â EOF¸¦ µÇµ¹¸°´Ù. ÀÌ EOF°ª°ú 0xff°ªÀ» ±¸ºÐÇϱâ À§ÇØ ¼­ ÀоîµéÀÎ ¹®ÀÚ´Â intÇüÀ¸·Î º¯È¯µÇ¾î ¹ÝȯµÈ´Ù. fputcÇÔ¼ö´Â ½ºÆ®¸²(stream)À¸·Î ÁöÁ¤ÇÑ È­ÀÏ¿¡ ¹®ÀÚ c¸¦ Ãâ·ÂÇÑ´Ù. µð½ºÅ©°¡ ²ËáÀ» °æ¿ì³ª Ã⠷½à ¿¡·¯°¡ ¹ß»ýÇϸé EOF°ªÀ» µÇµ¹¸®°í, ÅؽºÆ® ¸ðµå·Î ¿ÀǵǾî ÀÖÀ¸¸é '\n'À» CR¡¤LF·Î º¯ ȯÇÑ´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â fgetc ÇÔ¼ö¿Í fputc ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ È­ÀϺ¹»ç ÇÁ·Î±×·¥ÀÌ´Ù. #include void main(int argc, char *argv[]) { FILE *srcfp, *objfp; int ch; if (argc != 3) { printf("USAGE : %s sourcefile objectfile\n",*argv); exit(-1); } if ((srcfp = fopen(argv[1], "rb")) == NULL) { printf("File open error : %s\n\a",argv[1]); exit(-1); } if ((objfp = fopen(argv[2], "wb")) == NULL) { printf("File creation error : %s\n\a",argv[2]); exit(-1); } printf("FileCopy %s to %s\n\n",argv[1],argv[2]); while ((ch = fgetc(srcfp)) != EOF) fputc(ch,objfp); fclose(srcfp); fclose(objfp); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>scopy tc.exe ec.exe ³ú FileCopy tc.exe to ec.exe < Àú¼öÁØ È­ÀÏ ÀÔÃâ·Â ÇÔ¼öµé > Àú¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â¿¡¼­´Â FILEÀ̶õ ±¸Á¶ ´ë½Å °£´ÜÇÏ°Ô °¢ È­Àϸ¶´Ù ¹øÈ£¸¦ »ç¿ëÇϴµ¥, ÀÌ ¸¦ È­ÀÏ ½Äº°ÀÚ(file descriptor), ¶Ç´Â ÇÚµé(handle)À̶ó°í ÇÑ´Ù. ÀÌ ÇÚµéÀº 0 ÀÌ»óÀÇ °ªÀ» °¡Áö°í Àִµ¥ ½ÇÁ¦·Î 0°ú 1, 2 ´Â °íÁ¤µÈ ÀǹÌ(ÇÚµé 0Àº Ç¥ÁØ ÀÔ·ÂÀ» À§ÇÑ ¹øÈ£À̸ç 1Àº Ç¥ÁØ Ãâ·Â, ±× ¸®°í 2´Â Ç¥ÁØ ¿¡·¯·Î »ç¿ë)¸¦ °®°í À־ È­ÀÏÀ» óÀ½ ¿­°Ô µÇ¸é ±× È­ÀÏÀÇ ÇÚµéÀº 3ÀÌ µÈ´Ù. Àú¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â¿¡¼­µµ È­ÀÏÀ» »ç¿ëÇϱâ À§Çؼ­´Â È­ÀÏÀ» ¸ÕÀú ¿­¾î¾ß Çϸç, À̶§ ´ÙÀ½°ú °°ÀÌ open ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int fd; ¦¢ ¦¢ fd = open("È­ÀÏ À̸§ , ¾×¼¼½º ¹æ½Ä[, ¸ðµå]); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§¿¡¼­ [ ]´Â ¿ª½Ã »ý·«ÇÒ ¼ö ÀÖ´Â ºÎºÐÀ» ÀǹÌÇϸç, È­ÀÏ À̸§Àº fopen°ú °°ÀÌ ¿­ È­ÀÏÀÇ À̸§ ÀÌ°í ¾×¼¼½º ¹æ½ÄÀº ÀÌ È­ÀÏÀ» ¾î¶»°Ô ¿­ °ÍÀΰ¡Àε¥, fopen°ú´Â ´Þ¸® ´ÙÀ½°ú °°Àº ÇüÅ·Π»ç¿ë ÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¨¦¡¦¡¦¡¦¡¦¡¦¨¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ ¸ðµå ¦¢ °ª ¦¢ ³» ¿ë ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_RDONLY ¦¢ 0x0001 ¦¢ Àбâ Àü¿ëÀ¸·Î È­ÀÏÀ» ¿¬´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_WRONLY ¦¢ 0x0002 ¦¢ ¾²±â Àü¿ëÀ¸·Î È­ÀÏÀ» ¿¬´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_RDWR ¦¢ 0x0004 ¦¢ ÀÐ°í ¾²±â À§ÇØ È­ÀÏÀ» ¿¬´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_CREAT ¦¢ 0x0100 ¦¢ È­ÀÏÀÌ ¾øÀ» °æ¿ì »õ·Î¿î È­ÀÏÀ» ¸¸µç´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_TRUNC ¦¢ 0x0200 ¦¢ ÇöÀç ÀÖ´Â È­ÀÏÀÇ ³»¿ëÀ» 0À¸·Î(Á¦°Å) ÇÑ´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_EXCL ¦¢ 0x0400 ¦¢ O_CREAT°ú ÇÔ²² »ç¿ëÇϸç, È­ÀÏÀÌ ¾øÀ» °æ¿ì¿¡¸¸ ¿¬´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_APPEND ¦¢ 0x0800 ¦¢ È­ÀÏÀ» ¾²±â¿ëÀ¸·Î ¿­°í È­ÀÏ Æ÷ÀÎÅ͸¦ È­ÀÏÀÇ ³¡¿¡ À§Ä¡½ÃŲ´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_TEXT ¦¢ 0x4000 ¦¢ È­ÀÏÀ» ÅؽºÆ® Çü½ÄÀ¸·Î ¿¬´Ù. ¦¢ ¦§¦¡¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦«¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦© ¦¢ O_BINARY ¦¢ 0x8000 ¦¢ È­ÀÏÀ» ÀÌÁø Çü½ÄÀ¸·Î ¿¬´Ù. ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦ª¦¡¦¡¦¡¦¡¦¡¦ª¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À§ÀÇ O_·Î ½ÃÀÛÇÏ´Â °ÍµéÀº ¸ðµÎ »ó¼ö·Î ÀÌÀÇ Á¤ÀÇ´Â fcntl.h(ÀÌ°ÍÀº file controlÀÇ ¾àÀÚ)¿¡ µé¾î Àֱ⠶§¹®¿¡ open ¹®À» »ç¿ëÇÏ·Á¸é ¹Ýµå½Ã fcntl.h¸¦ Æ÷ÇÔÇÏ¿©¾ß ÇÑ´Ù. À§ÀÇ °ÍµéÀº ¾×¼¼½º ¹æ½ÄÀÇ ÇÑ Á¶°Çµé·Î ¿©·¯ °³¸¦ µ¿½Ã¿¡ °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ ¶§¿¡´Â °¢ Á¶°ÇµéÀ» '|'(ºñÆ® ¿¬»êÀÚ OR)¸¦ ÀÌ¿ëÇؼ­ ¹­À¸¸é µÈ´Ù. data.dat ¶õ È­ÀÏÀ» Àбâ Àü¿ëÀ¸·Î ¿­°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fd = open("data.dat", O_RDONLY); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ±×¸®°í ±âÁ¸ÀÇ È­ÀÏÀÌ ÀÖÀ¸¸ç, À̸¦ Áö¿ì°í ¾²±â Àü¿ëÀ¸·Î ¿­ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fd = open("data.dat", O_WRONLY | O_TRUNC); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ O_TRUNCÀÌ Ãß°¡ µÇ¾ú´Âµ¥, ¸¸¾à À̸¦ ½á ÁÖÁö ¾ÊÀ¸¸é ¾²±â Àü¿ëÀÌ¶óµµ È­ÀÏÀÇ ³»¿ëÀº ¾ø¾îÁö Áö ¾Ê´Â´Ù. ¹Ý¸é¿¡ È­ÀÏÀÇ ³¡¿¡ Ãß°¡ÇÏ°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ O_APPEND¸¦ ½á ÁÖ¸é µÈ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fd = open("data.dat", O_WRONLY | O_APPEND); ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ fopen ¹®°ú ´Ù¸¥ °ÍÀº ÇØ´ç È­ÀÏÀÌ ¾ø´Â °æ¿ì È­ÀÏÀÌ ¸¸µé¾îÁöÁö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù. ¸¸¾à È­ÀÏÀÌ ¾øÀ» ¶§ È­ÀÏÀ» ¸¸µéµµ·Ï ÇÏ°í ½ÍÀ¸¸é ´ÙÀ½°ú °°ÀÌ O_CREAT¸¦ ÁöÁ¤ÇÏ¿©¾ß Çϸç, ÀÌ ¶§¿¡´Â ¼¼ ¹øÀç ÀÎÀÚ°¡ ÇÊ¿äÇÏ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ fd = open("data.dat", O_WRONLY | O_CREAT | O_TRUNC, ¸ðµå); ¦¢ ¦¢ /* È­ÀÏÀÌ ÀÖÀ¸¸é ±× ³»¿ëÀ» Áö¿ì°í ¾øÀ¸¸é »ý¼º, fopenÀÇ "w"¿Í °°À½ */ ¦¢ ¦¢ fd = open("data.dat", O_WRONLY | O_CREAT | O_APPEND, ¸ðµå); ¦¢ ¦¢ /* È­ÀÏÀÌ ÀÖÀ¸¸é ±× ³¡À¸·Î À̵¿ÇÏ°í ¾øÀ¸¸é »ý¼º, fopenÀÇ "a"¿Í °°À½ */ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¼¼¹ø° ÀÎÀÚÀÎ ¸ðµå¿¡´Â ¾×¼¼½º ¹æ½Ä¿¡¼­ O_CREAT Ç÷¡±×°¡ ÁöÁ¤µÈ °æ¿ì, sys\stat.h(TCÀÇ °æ ¿ì)¿¡ Á¤ÀǵǾî ÀÖ´Â ´ÙÀ½ ±âÈ£ Áß Çϳª°¡ »ç¿ëµÈ´Ù(ÀϹÝÀûÀ¸·Î 8Áø¼ö 0700À» ÁÖ¸é µÈ´Ù). ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ S_IWRITE /* ½á ³Ö±â °¡´É */ ¦¢ ¦¢ S_IREAD /* ÀÐ¾î ³»±â °¡´É */ ¦¢ ¦¢ S_IREAD | S_IWRITE /* Àбâ / ¾²±â °¡´É */ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ Àбâ¿ë È­ÀÏ¿¡¼­´Â ¸ðµå¸¦ »ý·«Çصµ È­ÀÏÀÇ »ç¿ë¿¡´Â º° ÁöÀåÀÌ ¾ø´Ù. ±×¹Û¿¡ O_RDWRÀº ÀÐ°í ¾²°íÀÚ ÇÒ ¶§ »ç¿ëÇϸç O_EXCLÀº O_CREATÇÏ°í¸¸ °°ÀÌ »ç¿ëÇϴµ¥, ÁöÁ¤ÇÑ È­ÀÏÀÌ ÀÖÀ¸¸é ¿¡·¯°¡ ³­´Ù. Áï È­ÀÏÀÌ ¾ø´Â »óÅ¿¡¼­ »õ·Î ¸¸µé°íÀÚ ÇÒ ¶§¿¡´Â O_EXCL °ú O_CREAT¸¦ °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. openÀÌ Á¦´ë·Î È­ÀÏÀ» ¿­°Ô µÇ¸é À½ÀÌ ¾Æ´Ñ Á¤¼ö°ªÀ» ¹ÝȯÇϴµ¥, ±× È­ÀÏÀÇ ÇÚµéÀ» °è»ê °ªÀ¸ ·Î »êÃâÇÏ°Ô µÇ¸ç ¿¡·¯ ¹ß»ýÀÇ °æ¿ì -1À» °è»ê °á°ú·Î »êÃâÇÏ°Ô µÈ´Ù. µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ Ç×»ó Á¶»çÇÏ´Â °ÍÀÌ ÇÊ¿äÇÏ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ if ((fd = open("data.dat", O_RDONLY)) == -1) { ¦¢ ¦¢ fprintf(stderr,"Error: Cannot open data.dat\n"); ¦¢ ¦¢ : ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ È­ÀÏÀ» ¿­¾úÀ¸¸é À̸¦ ÀÐ°í ½á¾ß Çϴµ¥, ÀÐÀ» ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ read¶õ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int n; ¦¢ ¦¢ char *buf; ¦¢ ¦¢ int size; ¦¢ ¦¢ int fd; ¦¢ ¦¢ n = read(fd, buf, size); ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ ¿©±â¼­ fd´Â open¿¡¼­ ³Ñ°ÜÁØ È­ÀÏÀÇ ¹øÈ£ÀÌ°í buf´Â ÀоîµéÀÏ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ °ø°£(¹öÆÛ)À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ´Ù. ±×¸®°í size´Â ¸î °³ÀÇ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÏ °ÍÀΰ¡, ±× Å©±â¸¦ ³ªÅ¸³½´Ù. Áï read´Â È­ÀÏ fd·ÎºÎÅÍ size ¸¸Å­ÀÇ ¹ÙÀÌÆ®¸¦ Àоîµé¿© À̸¦ buf°¡ °¡¸®Å°´Â °÷¿¡ ÀúÀåÇÏ°Ô µÈ´Ù. È­ÀÏ ³»¿¡ size ¸¸Å­ÀÇ µ¥ÀÌÅÍ°¡ ÀÖÁö ¾ÊÀ» ¼öµµ Àִµ¥, À̸¦ Á¶»çÇϱâ À§ÇØ read´Â ÀÚ½ÅÀÌ ½Ç Á¦·Î ÀоîµéÀÎ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ °è»ê °á°ú·Î »êÃâÇÏ°í ÀÖ´Ù. µû¶ó¼­ read¸¦ »ç¿ëÇÒ ¶§¿¡´Â Ç×»ó À§ ÀÇ n °ªÀ» Àß Á¶»çÇÏ¿©¾ß Çϸç, ÀÌ°ÍÀÌ ½ÇÁ¦ ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ ¼öÀ̱⠶§¹®¿¡ buf°¡ °¡¸®Å°´Â °ø°£¿¡´Â ¹Ù·Î n ¹ÙÀÌÆ®°¡ Á¸ÀçÇÏ°Ô µÈ´Ù. ÀÌ nÀÌ 0À̶ó´Â °ÍÀº ÀоîµéÀÎ µ¥ÀÌÅÍ°¡ ¾ø´Ù, Áï EOF¶ó´Â ÀǹÌÀ̸ç ÀÌ °ªÀÌ -1À̸é ÀÌ´Â ÀÐÀ» ¶§ ¿¡·¯°¡ ¹ß»ýÇÑ °ÍÀ» ÀǹÌÇÑ´Ù. ¿¹¸¦ µé¾î data.dat¶õ È­ÀϷκÎÅÍ 80 ¹ÙÀÌÆ®ÀÇ µ¥ÀÌÅ͸¦ ÀоîµéÀÌ°íÀÚ ÇÒ ¶§¿¡´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int fd; ¦¢ ¦¢ char buf[80]; ¦¢ ¦¢ int n; ¦¢ ¦¢ fd = open("data.dat", O_RDONLY); ¦¢ ¦¢ n = (fd, buf, 80); /* µÎ¹ø° ÀÎÀÚ(buf)¿¡ µé¾î°¡´Â °ªÀº Æ÷ÀÎÅÍÀ̾î¾ß ÇÑ´Ù */ ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ À̶§ nÀÌ 80À̸é Àß ÀÐÀº °ÍÀÌ°í ´Ù¸¥ °ªÀÌ¸é µ¥ÀÌÅÍ°¡ ºÎÁ·Çϰųª ¹º°¡ À߸øµÈ °ÍÀÌ´Ù. ÀϹÝÀû À¸·Î ÀÐÀ» µ¥ÀÌÅÍÀÇ Å©±â´Â ´Ù¸£Áö¸¸ ¹öÆÛÀÇ Å©±â´Â º¸Åë °íÁ¤ÀûÀ¸·Î »ç¿ëÇϴµ¥ stdio.h¿¡ Á¤ÀÇ µÇ¾î ÀÖ´Â BUFSIZ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ °ü·Ê·Î µÇ¾î ÀÖ´Ù. ÀÌ Å©±â´Â ÇÑ È­ÀϷκÎÅÍ °¡Á®¿Ã ¼ö ÀÖ´Â µ¥ÀÌÅÍÀÇ ÃÖÀûÄ¡À̱⠶§¹®¿¡ ¸¹Àº ¾çÀÇ µ¥ÀÌÅ͸¦ Àаųª ¾µ ¶§¿¡´Â ÀÌ °ÍÀ» »ç¿ëÇÏ´Â °ÍÀÌ ¼º´É À» ÃÖ´ëÇÑ ³ôÀÏ ¼ö ÀÖ´Ù. ´ÙÀ½Àº read ÇÔ¼öÀÇ ÇÑ ¿¹·Î¼­ size file(1) ... fine(n)°ú °°ÀÌ »ç¿ëÇÏ¿© °¢ È­ÀϵéÀÇ Å©±â¸¦ °è»ê ÇÏ¿© Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. #include #include main(int argc, char *argv[]) { int fd; long int size; int n; char buf[BUFSIZ]; if (argc == 1) { fprintf(stderr,"USAGE: %s file(1) file(2) ... file(n)\n",*argv); return (0); } while (--argc > 0) { if ((fd = open(*++argv, O_RDONLY | O_BINARY)) == -1) { fprintf(stderr,"Error: Cannot open %s\n",*argv); continue; } size = 0l; while ((n = read(fd, buf, BUFSIZ)) > 0) size += n; if (n == 0) fprintf(stdout,"%s: %ld bytes.\n",*argv,size); else fprintf(stderr,"Error in reading %s\n",*argv); } close(fd); /* ÇÚµéÀÌ ´Ù·ç´Â È­ÀÏÀ» ´Ý´Â´Ù. µÇµ¹¸² °ªÀº È­ÀÏ ´Ý±â°¡ */ } /* ¼º°øÇϸé 0, ½ÇÆÐÇϸé -1ÀÇ °ªÀ» µÇµ¹¸°´Ù */ ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>size tc.exe tcc.exe ³ú tc.exe: 290249 bytes. tcc.exe: 179917 bytes. Àú¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â¿¡¼­ È­ÀϷκÎÅÍ ÀоîµéÀÌ´Â °ÍÀº ÀÌ read ¹Û¿¡ ¾ø´Ù. Áï ¹®ÀÚ Çϳª¾¿ ¹Û ¿¡ ÀоîµéÀÌÁö ¾Ê±â ¶§¹®¿¡ ¸¸¾à Á¤¼ö°ªÀ» ÀоîµéÀÌ°íÀÚ ÇÒ ¶§¿¡´Â ÀоîµéÀÎ °ÍÀ» Á¤¼ö·Î º¯È¯ÇÏ ¿©¾ß ÇÑ´Ù. µû¶ó¼­ º¹ÀâÇÑ Æ÷¸ËÀ¸·Î µÈ µ¥ÀÌÅ͸¦ ÀоîµéÀÏ ¶§¿¡´Â °í¼öÁØÀÇ È­ÀÏ ÀÔÃâ·ÂÀ» »ç¿ë ÇÏ´Â °ÍÀÌ ÁÁ´Ù. read ¿Í ¹Ý´ë·Î È­ÀÏ¿¡ ¾²°íÀÚ ÇÒ ¶§´Â ´ÙÀ½°ú °°ÀÌ writeÀ̶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. ¦£¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¤ ¦¢ int fd; ¦¢ ¦¢ char *buf; ¦¢ ¦¢ int size; ¦¢ ¦¢ int n; ¦¢ ¦¢ n = write(fd, buf, size); ¦¢ ¦¢ ¦¢ ¦¢ ¦¢ ¦¦¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¥ fd´Â open¿¡ ÀÇÇØ ³Ñ°Ü ¹ÞÀº È­ÀÏÀÇ ÇÚµéÀ̸ç buf´Â Ãâ·ÂÇÒ µ¥ÀÌÅÍ°¡ µé¾î ÀÖ´Â °÷À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÌ°í, size´Â Ãâ·ÂÇÒ µ¥ÀÌÅÍÀÇ Å©±â(¹ÙÀÌÆ®¼ö)¸¦ ÀǹÌÇÑ´Ù. Áï fd°¡ ³ªÅ¸³»´Â È­ÀÏ¿¡ size¸¸ Å­ÀÇ ¹ÙÀÌÆ®¸¦ buf·ÎºÎÅÍ °¡Á®¿Í Ãâ·ÂÇ϶ó´Â Àǹ̰¡ µÈ´Ù. À̶§ write ÇÔ¼ö´Â ½ÇÁ¦·Î ¾´ ¹ÙÀÌÆ®ÀÇ ¼ö¸¦ °è»ê °á°ú·Î »êÃâÇÏ°Ô µÈ´Ù. ÀÌ´Â Ç×»ó size¿Í °°Áö´Â ¾ÊÀºµ¥, ¿¹¸¦ µé¾î µð½ºÅ©°¡ ²ËÂ÷¼­ ´õ ÀÌ»ó ¾µ °ø°£ÀÌ ¾ø°Ô µÇ¸é ÁöÁ¤ÇÑ Å©±â º¸´Ù ÀûÀº ¼ö¸¦ ¾²°ÔµÇ¹Ç·Î nÀÌ sizeº¸´Ù ÀÛÀ» ¼ö ÀÖ ´Ù. ±×¸®°í ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì¿¡´Â read¿Í °°ÀÌ -1À» °è»ê °á°ú·Î »êÃâÇÑ´Ù. ´ÙÀ½Àº read¿Í write ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÇÑ È­ÀÏÀ» ¶È°°ÀÌ º¹»çÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. #include #include main(int argc, char *argv[]) { int fd1, fd2; char buf[BUFSIZ]; int n; if (argc != 3) { fprintf(stderr,"USAGE: %s sourcefile objectfile\n",*argv); return (1); } if ((fd1 = open(*(argv+1), O_RDONLY | O_BINARY)) < 0) { fprintf(stderr,"Error: Cannot open %s\n",*(argv+1)); return (2); } if ((fd2 = open(*(argv+2), O_WRONLY | O_TRUNC | O_CREAT | O_BINARY, 0700)) < 0) { fprintf(stderr,"Error: Cannot create %s\n",*(argv+2)); return (3); } printf("FileCopy %s to %s\n\n",*(argv+1),*(argv+2)); while ((n = read(fd1, buf, BUFSIZ)) > 0) if (write(fd2, buf, n) != n) { /* read¿Í ¸¶Âù°¡Áö·Î Àú¼öÁØÀÇ È­ÀÏ ÀÔÃâ·Â¿¡¼­ Ãâ·Â ÇÔ¼ö´Â write ¹Û¿¡ ¾ø´Ù. µû¶ó¼­ ¹®ÀÚ µ¥ÀÌÅ͸¦ Ãâ·ÂÇϱ⿡´Â ±¦ÂúÁö¸¸ Á¤¼ö³ª ½Ç¼ö°ªÀ» Ãâ·ÂÇÏ°íÀÚ ÇÒ ¶§¿¡´Â À̸¦ ASCII ÄÚµå ÇüÅ·Î, Áï ¹®ÀÚ ÇüÅ·Πº¯È¯ÇÑ ´ÙÀ½ Ãâ·ÂÇÏ¿©¾ß Çϱ⠶§¹®¿¡ ±×·¯ÇÑ °æ¿ì¿¡´Â °í¼öÁØÀÇ ÀÔÃâ·Â ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ Æí¸®ÇÏ´Ù */ fprintf(stderr,"Error in writing %s\n",*(argv+2)); return (4); } if (n < 0) fprintf(stderr,"Error in reading %s\n",*(argv+1)); close(fd1); close(fd2); } ¦£¦¡¦¡¦¡¦¤ ¦¢ °á°ú ¦¢ ¦¦¦¡¦¡¦¡¦¥ --------------------------------------------------------------------------------- C:\TC>slcopy tc.exe ec.exe ³ú FileCopy tc.exe to ec.exe ÿ ÿ