* Á¦ 8Àå - È­ÀÏ Á¶ÀÛ / ±âŸÀÇ °Íµé »õ³»±â °­Á¶õ³» 'C¾ð¾î¸¦ ½ÃÀÛÇÏÀÚ!'ÀÇ ¸¶Áö¸·È¸ÀÎ 8Àå¿¡¼­´Â ÄÄÇ»ÅÍ¿¡ ¼­ »©³õÀ» ¼ö ¾ø´Â È­ÀÏ Ã³¸®¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸°í, 7Àå¿¡ °ÉÃÄ °­Á¸¦ ÁøÇà ÇØ ¿À¸é¼­ ¿©·¯ºÐµé¿¡°Ô ¾ð±ÞÇÏÁö ¾ÊÀº CÀÇ ¼±Çà󸮱â, ¸í·ÉÇà ÀÎÀÚ, typ edef µî¿¡ ´ëÇÏ¿© ¼³¸íÇÒ ¿¹Á¤ÀÌ´Ù. »ç½Ç, ÀÌ °­Á¿¡¼­ ¾ð±ÞÇÏÁö ¾Ê´Â ±â¾ïÀå¼Ò ÇÒ´ç, ´ÙÂ÷¿ø ¹è¿­Æ÷ÀÎÅÍ, ¿ø /±Ù°Å¸® Æ÷ÀÎÅÍ, ÇÔ¼ö Æ÷ÀÎÅÍ µîÀÇ Æ÷ÀÎÅÍÀÇ ±íÀº °÷°ú ¾î¼Àºí¸® Á¢¼Ó µî µµ CÀÇ ÇÑ ¿ä¼ÒÀÌÁö¸¸, ÀÌ °­ÁÂÀÇ ¼º°Ý°ú ¸ÂÁö ¾Ê¾Æ¼­ »ý·«ÇÑ´Ù. ÇÏÁö¸¸, ÀÌ °­Á¿¡¼­ ¾ð±ÞÇÑ °Íµé¸¸ ¿ÏÀüÈ÷ ÀÌÇØÇß´Ù¸é, ÃʱÞÀÚ ¼öÁØÀ» ¹þ¾î³µ´Ù°í ÇÒ ¼ö ÀÖ´Ù. 1. ÀÔÃâ·ÂÀÇ Á¾·ù È­ÀÏÀ» ´ë»óÀ¸·Î ÇÏ´Â ÀÛ¾÷ÀÇ Á¾·ù´Â ¾²±â, Ãß°¡, ÀбâÀÇ 3°¡Áö·Î ³ª´­ ¼ö ÀÖ´Ù. * ¾²±â - È­ÀÏÀ» »õ·Î ¸¸µå´Â °ÍÀε¥, ÀÌ¹Ì °°Àº È­ÀÏÀÌ Á¸ÀçÇÏ¸é ±âÁ¸ÀÇ ÀÚ·á´Â ¸ðµÎ Áö¿öÁø´Ù. * Ãß°¡ - È­ÀÏ µÞºÎºÐ¿¡ »õ·Î¿î ÀڷḦ Ãß°¡Çϱâ À§ÇØ »ç¿ëµÇ´Âµ¥, ¼±Åà ÇÑ È­ÀÏÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é ±× ÀÚü·Î »õ·Î¿î È­ÀÏÀÌ Çü¼ºµÈ´Ù. * Àбâ - ÀÌ¹Ì ¸¸µé¾îÁø È­ÀÏ¿¡¼­ ÀڷḦ ÀоîµéÀÌ´Â °ÍÀ¸·Î¼­, ÇØ´ç È­ ÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸¸é ¿¡·¯¸¦ ¹ß»ý½ÃŲ´Ù. ÀÌ ¼¼°¡Áö ÀÌ¿Ü¿¡µµ 'Àбâ/¾²±â °â¿ë', 'Àбâ/Ãß°¡ °â¿ë'ÀÇ ÇüŸ¦ Áö¿ø ÇÑ´Ù. 2. ÀÔÃâ·ÂÀÇ ÀýÂ÷ È­ÀÏÀ» ´ë»óÀ¸·Î ÀÛ¾÷ÇÏ´Â °æ¿ì¿¡´Â ¹Ýµå½Ã ´ÙÀ½ÀÇ ÀýÂ÷¸¦ °ÅÃÄ¾ß ÇÑ´Ù. (1) È­ÀÏ open - ÀÔÃâ·Â ´ë»óÀÌ µÇ´Â È­Àϸí°ú mode¸¦ ÁöÁ¤ÇÏ´Â ÀýÂ÷ (È­ÀÏ ÀÔÃâ·ÂÀ» À§ÇÑ ¹öÆÛ¸¦ ÇÒ´çÇÏ°Ô µÈ´Ù) (2) ÀÔÃâ·Â ¼öÇà (3) È­ÀÏ close - ÀÔÃâ·Â °úÁ¤À» ³¡³½ ´ÙÀ½¿¡´Â ¹Ýµå½Ã ÀÌ °úÁ¤À» ½ÇÇà ½ÃÄÑ (1)¿¡¼­ ÇÒ´çµÈ ¹öÆÛ¸¦ ÇØÁ¦ÇØ¾ß ÇÑ´Ù. È­ÀÏÀ» ´ÝÁö ¾ÊÀºÃ¤ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» Á¾·á½ÃÅ°¸é È­ÀÏÀÌ ±ú Áö´Â °æ¿ì°¡ ÀÖÀ¸¹Ç·Î ÁÖÀÇ ÇÏ¿©¾ß ÇÑ´Ù. 3. È­ÀÏ Ã³¸®¿¡ °üÇÑ ÇÔ¼ö 1) È­ÀÏÀÇ °³¹æ .¼±¾ð¹® FILE *fp : È­ÀÏ ±¸Á¶Ã¼ Æ÷ÀÎÅÍ º¯¼ö¸¦ ¼±¾ðÇÑ´Ù. ÀÌ ÇÔ¼ö´Â º¯¼ö ÀÇ ¼±¾ð ºÎºÐ(º¸Åë ¼±¾ðºÎÀÇ ¸Ç ³¡)¿¡¼­ Á¤ÀÇÇÑ´Ù.(fp´Â ÀÓÀÇ º¯¼öÀÓ) ===> ¿¡ È­ÀÏ¿¡ °üÇÑ ÀÚ·áµéÀ» ÀúÀåÇÒ °ø°£ ÀÌ ±¸Á¶Ã¼ 'FILE'·Î ¼±¾ðµÇ¾î ÀÖ´Ù. .fp=fopen("È­Àϸí","mode") : È­ÀÏÀ» ¿ÀÇÂÇÏ°í È­ÀÏ Æ÷ÀÎÅ͸¦ ÃʱâÈ­ÇÑ ´Ù. È­ÀÏ Æ÷ÀÎÅÍ´Â ÀÚ·á°¡ È­ÀÏ ³»ÀÇ ¾î´À ºÎºÐ¿¡ À§Ä¡ÇØ ÀÖ´Â Áö¸¦ ±â¾ïÇÏ´Â º¯¼ö·Î¼­ ÀڷḦ Àаųª ¾µ ¶§¸¶´Ù ÀÚ·áÀÇ Å©±â ¸¸Å­ µÚ·Î À̵¿ÇÑ´Ù. È­ÀÏ ¿ÀÇ¿¡ ½ÇÆÐÇϸé ÀÌ ÇÔ¼öÀÇ °ªÀº nu ll pointer°¡ µÈ´Ù. mode´Â ¾Æ·¡ÀÇ ¸ðµå°¡ ÀÖ´Ù. <È­ÀÏÆ÷ÀÎÅÍ À§Ä¡> "r" : È­ÀÏÀ» Àбâ Àü¿ëÀ¸·Î ¿¬´Ù(read) È­ÀÏ Ã³À½ "w" : È­ÀÏÀ» »õ·ÎÀÌ »ý¼ºÇÏ°í ¾²±â Àü¿ëÀ¸·Î ¿¬´Ù(write) È­ÀÏ Ã³À½ "a" : È­ÀÏÀ» Ãß°¡ Àü¿ëÀ¸·Î ¿¬´Ù(append) È­ÀÏ ³¡ "r+" : È­ÀÏÀ» °»½Å¿ëÀ¸·Î ¿¬´Ù(Àбâ,¾²±â ¸ðµÎ °¡´É) È­ÀÏ Ã³À½ "w+" : È­ÀÏÀ» »õ·ÎÀÌ »ý¼ºÇÏ°í °»½Å¿ëÀ¸·Î ¿¬´Ù È­ÀÏ Ã³À½ "a+" : È­ÀÏÀÌ ¾ø´Â °æ¿ì »õ·ÎÀÌ »ý¼ºÇÏ°í °»½Å¿ëÀ¸·Î È­ÀÏ ³¡ ¿¬´Ù ¸ðµåÁöÁ¤¹®ÀÚ µÚ¿¡ t³ª b¸¦ ºÙ¿© ÅؽºÆ®È­ÀÏ°ú ÀÌÁøÈ­ÀÏÀÓÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÅؽºÆ® È­ÀÏÀº ASCIIÄڵ带 ÀÌ¿ëÇÏ¿© ¹®Àڷνá ÀúÀåµÈ È­ÀÏÀ» ¸» ÇÏ°í, ÀÌÁø È­ÀÏÀº ±â°è¾îÄڵ带 ÀúÀåÇÒ ¶§ »ç¿ëµÇ´Â È­ÀÏ Çü½ÄÀÌ´Ù. .freopen("È­Àϸí","mode",fp) : fp°¡ °¡¸®Å°´Â È­ÀÏÀ» ´Ý°í »õ·Î¿î ¸ðµå ·Î ´Ù½Ã ¿¬´Ù. ÀÌ ÇÔ¼ö´Â ÀÌ¹Ì ¿ÀÇÂµÈ ÇÔ¼öÀÇ ¸ðµå¸¦ ¹Ù²Ù´Â °æ¿ì¿¡ ÀÌ¿ëÇÑ´Ù. 2) È­ÀÏÀÇ Á¾°á .fclose(fp) : fp·Î ÁöÁ¤ÇÑ È­ÀÏÀ» ´Ý´Â ÇÔ¼öÀÌ´Ù. fclose()ÇÔ¼ö´Â ¼º°øÀû ÀÎ ÆмâÀ̸é 0À», ±×·¸Áö ¸øÇϸé -1À» ¹ÝȯÇÑ´Ù. 3) È­ÀÏ ÀÔÃâ·Â ÇÔ¼ö .fputs("¹®ÀÚ¿­/º¯¼ö",fp) : ¹®ÀÚ¿­À» È­ÀÏ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â À§Ä¡¿¡ ¼ö ·ÏÇÑ´Ù. ¹®ÀÚ¿­À» ¼ö·ÏÇÑ ´ÙÀ½¿¡´Â È­ÀÏ Æ÷ÀÎÅÍ fp°¡ ¹®ÀÚ¿­ÀÇ ±æÀ̸¸Å­ µÚ·Î À̵¿ÇÑ´Ù. .fputc(fp,'¹®ÀÚ') : ¹®ÀÚ 1°³¸¦ È­ÀÏ¿¡ Ãâ·ÂÇÑ´Ù. .fprintf(fp,"¼­½ÄÁ¦¾î¹®ÀÚ¿­",º¯¼ö,..) : º¯¼öÀÇ ³»¿ëÀ» ¼­½ÄÁ¦¾î ¹®ÀÚ¿­ ÀÇ Æ÷¸Ë¿¡ ¸ÂÃß¾î È­ÀÏ¿¡ Ãâ·ÂÇÑ´Ù. Ãâ·Â ¸Åü°¡ È­ÀÏÀ̶ó´Â °Í¸¸ ´Ù¸¦ »Ó printf()ÇÔ¼ö¿Í ¿ë¹ýÀÌ °°´Ù. .fgets(º¯¼ö,±æÀÌ,fp) : È­ÀÏ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â À§Ä¡¿¡¼­ ÁöÁ¤µÈ (±æÀÌ-1 )¸¸Å­ ÀڷḦ ÀÐ¾î º¯¼ö¿¡ ÇÒ´çÇÑ´Ù. º¯¼öÀÇ ¸¶Áö¸·¿¡´Â '\0' ÀÌ Ãß°¡µÇ´Âµ¥ È­ÀÏÀÇ ÀÚ·á ³»ºÎ¿¡ '\n'ÀÌ Àְųª È­ÀÏÀÌ ³¡³¯ °æ¿ì¿¡´Â ±× ½ÃÁ¡±îÁö¸¸ ÀоîµéÀδÙ. È­ÀÏ¿¡¼­ ÁöÁ¤µÈ ±æÀ̸¸ Å­ ÀоîµéÀÏ ¶§´Â ¼ö·ÏµÈ ¹®ÀÚ¿­ÀÇ ±æÀ̺¸´Ù 1¹®ÀÚ ´õ Å©°Ô Áö Á¤ÇØ¾ß ÇÑ´Ù. .fgetc(fp) : È­ÀÏ¿¡¼­ ÇÑ ¹®ÀÚ¸¦ ÀÐ¾î µéÀδÙ. (³»ÀåÇÔ¼öÀÌ´Ù) .getc(fp) : È­ÀÏ¿¡¼­ ÇÑ ¹®ÀÚ¸¦ ÀÐ¾î µéÀδÙ. (¸ÅÅ©·ÎÇÔ¼öÀÌ´Ù) .fscanf(fp,"¼­½ÄÁ¦¾î ¹®ÀÚ¿­",º¯¼ö,..) : È­ÀÏ¿¡¼­ ¼­½ÄÁ¦¾î¹®ÀÚ¿­ÀÇ Æ÷ ¸Ë´ë·Î ÀڷḦ Àоîµé¿© º¯¼ö¿¡ ÇÒ´çÇÑ´Ù. ÀԷ¸Åü°¡ È­ÀÏÀÌ ¶ó´Â °Í¸¸ ´Ù¸¦ »Ó scanf()ÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù. .fread(º¯¼ö,±æÀÌ,°¹¼ö,fp) : È­ÀÏ Æ÷ÀÎÅÍÀÇ ÇöÀç À§Ä¡¿¡¼­ ÁöÁ¤µÈ ±æÀ̸¸ Å­ ÁöÁ¤µÈ °¹¼ö¸¦ ÀоîµéÀδÙ. È­ÀÏ ³¡ÀÌ °ËÃâµÇ¸é ±× ½ÃÁ¡¿¡ ¼­ ÀоîµéÀÌ´Â °ÍÀ» ¸ØÃá´Ù. ÇÔ¼öÀÇ °ªÀº Á¤»ó ¼öÇàÀÎ °æ¿ì¿¡ ´Â ÀоîµéÀÎ °¹¼ö°¡ µÇ¸ç, È­ÀÏÀÇ ³¡À» °ËÃâÇßÀ» °æ¿ì¿¡´Â 0ÀÌ µÈ´Ù. .fflush(fp) : ¹öÆÛ ³»ÀÇ ÀڷḦ ºñ¿î´Ù. µð½ºÅ©¿¡ ¼ö·ÏÇÒ ÀÚ·á°¡ ÀÖÀ¸¸é µð½ºÅ©¿¡ ¼ö·ÏÇÒ ÀÚ·á°¡ ÀÖÀ¸¸é µð½ºÅ©¿¡ ¼ö·ÏÇÑ ÈÄ ¹öÆÛ¸¦ ºñ ¿î´Ù. º¸ÅëÀº ÀÚ·áÀÇ ¼ö·ÏÀ» È®½ÇÈ÷ Çϱâ À§ÇÏ¿© »ç¿ëµÈ´Ù. fc lose()ÇÔ¼ö°¡ ¼öÇàµÇ¸é ÀÚµ¿À¸·Î fflush()ÇÔ¼ö°¡ ¼öÇàµÈ´Ù. .feof(fp) : È­ÀÏÀÇ ³¡ÀÎÁö¸¦ ÆÇÁ¤ÇÑ´Ù. È­ÀÏÀÇ ³¡ÀÌ ¾Æ´Ï¸é 0 ÀÌ¿ÜÀÇ °ª ÀÌ µÇ°í, ³¡À̸é 0ÀÌ µÈ´Ù. .ftell(fp) : È­ÀÏ Æ÷ÀÎÅÍÀÇ À§Ä¡¸¦ ±¸ÇÑ´Ù. .fseek(fp,»ó´ëÀ§Ä¡,¸ðµå) : È­ÀÏ Æ÷ÀÎÅÍÀÇ À§Ä¡¸¦ º¯°æÇÑ´Ù. »ó´ë À§Ä¡´Â ¼öÄ¡ ´ÙÀ½¿¡ 'L'À» ºÙÀÌ°í, ¼ö½ÄÀÎ °æ¿ì¿¡´Â ºÙÀÌÁö ¾Ê´Â´Ù. ¸ðµå´Â ¾Æ·¡ ¼¼ °¡Áö Áß Çϳª°¡ µÈ´Ù. 0: È­ÀÏÀÇ ½ÃÀÛºÎÅÍ »ó´ë À§Ä¡¸¦ °è»êÇÑ´Ù. 1: ÇöÀçÀÇ È­ÀÏ Æ÷ÀÎÅͺÎÅÍ »ó´ë À§Ä¡¸¦ °è»êÇÑ´Ù. 2: È­ÀÏÀÇ ³¡ºÎºÐºÎÅÍ »ó´ë À§Ä¡¸¦ °è»êÇÑ´Ù. <¿¹Á¦1> fseek()ÀÇ »ç¿ë ¿¹ fseek(fp,5L,0); : fp¸¦ È­ÀÏÀÇ ½ÃÀÛÀ§Ä¡¿¡¼­ 5¹ÙÀÌÆ®¹ø°·Î À̵¿ fseek(fp,2L,1); : fp¸¦ ÇöÀçÀÇ À§Ä¡¿¡¼­ 2¹ÙÀÌÆ® À̵¿ fseek(fp,-1L,2); : fp¸¦ È­ÀÏÀÇ ³¡¿¡¼­ 1¹ÙÀÌÆ® ÀüÀÇ À§Ä¡·Î À̵¿ ÀÌ ¶§ ÇÔ¼öÀÇ ¼öÇàÀÌ ¼º°øÀûÀÌ¸é º¯°æµÈ È­ÀÏ Æ÷ÀÎÅÍ À§Ä¡°¡, ½ÇÆÐÇϸé -1ÀÌ ±¸ÇØÁø´Ù. 4. È­ÀÏ Ã³¸®¿¡ °üÇÑ ¿¹Á¦µé <¿¹Á¦2> ÅؽºÆ® È­ÀÏÀ» Àоî È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ ÀÛ¼º <¸®½ºÆ®1> ÇÑ ±ÛÀÚ¾¿ Àоî ÇÑ ±ÛÀÚ¾¿ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ ( fopen()ÇÔ¼ö¾ÈÀÇ È­ÀϸíÀº ÇöÀç µð·ºÅ丮³»¿¡ ÀÖ¾î¾ß ÇÑ´Ù ) #include main() { FILE *in; /* È­ÀÏ¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¼±¾ð */ int ch; if ((in=fopen("c:hello.c","r")) != NULL) { /* in¿¡ null pointer°¡ µÇµ¹·Á ÁöÁö ¾Ê´Â´Ù¸é */ /* Áï, È­ÀÏÀÌ ¼º°øÀûÀ¸·Î °³¹æÀÌ µÇ¸é */ while ((ch=getc(in)) != EOF) /* È­ÀÏ¿¡¼­ ÇÑ ¹®ÀÚ¸¦ Àоî */ /* chº¯¼ö¿¡ ÀúÀåÇÑ´Ù. ±×¸® */ /* °í È­Àϳ¡(EOF)ÀÌ ¾Æ´Ï¸é,*/ putc(ch,stdout); /* Ç¥ÁØ Ãâ·Â(È­¸é)¿¡ ch Ãâ·Â */ fclose(in); } else printf("file not found..\n"); } <¸®½ºÆ®2> ÇÑ ¶óÀξ¿ Àоî ÇÑ ¶óÀξ¿ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ #include #define MAX 80 main() { FILE *fpt; char str[MAX]; fpt=fopen("c:hello.c","r"); while (fgets(str,MAX,fpt) != NULL) puts(str); } <¿¹Á¦3> ´ÙÀ½ ÀڷḦ Å°º¸µå¿¡¼­ ÀÔ·ÂÇÏ¿© È­ÀÏ·Î ÀÛ¼ºÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿©¶ó. ======================================= ÀÌ ¸§ ÁÖ ¼Ò ÀüÈ­¹øÈ£ ======================================= È« ±æµ¿ ¼­¿ï½Ã Áß±¸ ½Å´çµ¿ 432-3453 ÀÌ ¼ø½Å °æ³² ÁøÇؽà 89-3455 ±è À¯½Å ÀüºÏ ºÎ¾È±º 34-1123 x <- (ÀÚ·áÀÇ ³¡ Ç¥½Ã) <¸®½ºÆ®3> 1:#include 2:main() 3:{ 4: char name[8],addr[21],tel[9]; 5: int n=0; 6: FILE *fp; 7: fp=fopen("SAMPLE.DAT","a"); 8: do { 9: printf("%2d. ",++n); 10: printf("¼º¸í : "); gets(name); 11: if (name[0] == 'X' || name[0] == 'x') break; 12: printf(" ÁÖ¼Ò : "); gets(addr); 13: printf(" ÀüÈ­ : "); gets(tel); 14: fputs(name,fp); fputc('\n',fp); 15: fputs(addr,fp); fputc('\n',fp); 16: fputs(tel,fp); fputc('\n',fp); 17: } while (1); 18: fclose(fp); 19:} #È­ÀÏ¿¡ ÀÚ·á°¡ ¼ö·ÏµÇ´Â ÇüÅÂ: (È­Àϳ»¿¡¼­ '\nÀº 2¹ÙÀÌÆ®·Î Ãë±ÞµÈ´Ù) +------------------------------------------------------- |È« ±æµ¿\n¼­¿ï½Ã Áß±¸ ½Å´çµ¿\n432-3453\nÀÌ ¼ø½Å\n... +------------------------------------------------------- À§ ÇÁ·Î±×·¥ÀÇ 14Çà - 16Çà¿¡¼­ º¸¸é, fputs()ÇÔ¼ö¿¡¼­´Â ¹®ÀÚ¸¦ È­ÀÏ¿¡ ¼ö·Ï ÇÒ¶§ °¢ ¹®ÀÚ¿­ÀÇ ³¡¿¡ ¾Æ¹«·± Ç¥½Ãµµ ÇØÁÖÁö ¾ÊÀ¸¹Ç·Î ÀڷḦ ±¸ºÐ Çϱâ À§Çؼ­ fputc()¸¦ ÀÌ¿ëÇØ ÀڷᱸºÐ ¹®ÀÚÀÇ ÇϳªÀÎ '\n'¹®ÀÚ¸¦ Ãß°¡ÇÏ ¿´´Ù. <¿¹Á¦4> À§¿¡¼­ ±¸ÃàÇÑ È­ÀÏÀ» Àоî È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ ÀÛ¼º <¸®½ºÆ®4> #include main() { char name[8],addr[21],tel[9]; int n=0; FILE *fp; fp=fopen("SAMPLE.DAT","r"); printf("============================================\n"); printf("¹øÈ£ ÀÌ ¸§ ÁÖ ¼Ò ÀüÈ­¹øÈ£\n"); printf("============================================\n"); do { fgets(name,25,fp); if (feof(fp)) break; /* È­ÀÏ ³¡ÀÌ °ËÃâµÇ¸é ÁßÁö */ fgets(addr,25,fp); fgets(tel,25,fp); printf("%2d %-11s%-19s%8s\n",++n,name,addr,tel); } while (1); printf("============================================\n"); fclose(fp); } À§ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°¸é µ¥ÀÌÅÍ È­Àϳ»ÀÇ '\n' ¶§¹®¿¡ Ãâ·Â°á°ú°¡ ÀÌ»ó ÇÏ°Ô ³ª¿Â´Ù. À§ÀÇ 12, 14, 15ÇàÀ» ¾Æ·¡¿Í °°ÀÌ °¢°¢ º¯°æ½ÃÅ°ÀÚ. fgets(name,25,fp); name[strlen(name)-1]='\0'; fgets(addr,25,fp); addr[strlen(addr)-1]='\0'; fgets(tel,25,fp); tel[strlen(tel)-1]='\0'; 5. ¼øÂ÷È­ÀÏ°ú ·£´ýÈ­ÀÏ È­ÀÏÀº ÀÚ·áÀÇ Æí¼º¹æ¹ý¿¡ µû¶ó ¼øÂ÷È­ÀÏ(Sequential file)°ú ·£´ýÈ­ÀÏ(R andom file)·Î ±¸ºÐµÈ´Ù. ¼øÂ÷È­ÀÏÀº ¸ðµç ÀÚ·á°¡ ¹ß»ýÇÑ ¼ø¼­´ë·Î ÀúÀåµÇ °í, Æí¼ºµÈ È­ÀÏÀº ¼øÂ÷ÀûÀ¸·Î ÀÐÇôÁø´Ù. ¶ÇÇÑ È­ÀÏ ³»ÀÇ Æ¯Á¤ÇÑ µ¥ÀÌÅ͸¦ °»½ÅÇÒ ¶§¿¡´Â ÀÏ´Ü È­ÀÏÀ» ¸ðµÎ Àоîµé¿© ÇÊ¿äÇÑ ºÎºÐÀ» ¼öÁ¤ÇÏ°í, ´Ù½Ã óÀ½ºÎÅÍ Â÷·Ê´ë·Î µð½ºÅ©¿¡ ¼ö·ÏÇÏ´Â È­ÀÏ ÇüÅÂÀÌ´Ù. ÀÌ·¯ÇÑ È­ÀÏÀº ÀÚ·á ÀÇ °¹¼ö°¡ ÀûÀº °æ¿ì³ª ¹®¼­ È­ÀÏ, ÀÚ·áÀÇ º¯µ¿ÀÌ °ÅÀÇ ¾ø´Â °íÁ¤Çü ÀÚ·á ÀÎ °æ¿ì¿¡ À¯¸®ÇÏ´Ù. ·£´ýÈ­ÀÏÀºÀڷḦ ÀÏÁ¤ÇÑ Å©±â(·¹ÄÚµå)¿¡ ¸ÂÃß¾î ÀúÀåÇÑ ´ÙÀ½, ·¹ÄÚµå ´ÜÀ§·Î ÀÔÃâ·ÂÇÏ´Â ÇüÅÂÀÇ È­ÀÏÀÌ´Ù. ÀÌ °ÍÀº È­Àϳ»ÀÇ Æ¯Á¤ ÀڷḦ ¼öÁ¤ ÇÏ´Â °æ¿ì ¿øÇÏ´Â ·¹Äڵ常 Àоîµé¿© ¼öÁ¤ÇÑ ´ÙÀ½ ´Ù½Ã ±× ÀÚ¸®¿¡ ±â·ÏÇÏ ´Â °ÍÀÌ´Ù.( Á» ´õ °³¼±µÈ °æ¿ì´Â À妽º È­ÀÏÀ̶ó´Â »öÀÎ È­ÀÏÀ» ¸¸µé¾î µ¥ÀÌÅ͸¦ °Ë»öÇϱâ ÆíÇϵµ·Ï ÇÑ °ÍÀÌ ÀÖ´Ù ) C¿¡¼­ ·£´ý È­ÀÏÀÇ Ã³¸®¸¦ À§ÇÑ ÇÔ¼ö·Î´Â fprintf(),fseek(),fread(),fte ll() µîÀÌ ÀÖ´Ù. <¿¹Á¦5> <¸®½ºÆ®3>ÀÇ ÇÁ·Î±×·¥À» ·£´ýÈ­ÀÏ Çü½ÄÀ¸·Î ÀÛ¼ºÇ϶ó. <¸®½ºÆ®5> #include main() { char name[8],addr[21],tel[9]; int n=0; FILE *fp; fp=fopen("SAMPLE1.DAT","a+"); do { printf("%2d. ¼º¸í:",++n); gets(name); if (name[0]=='X' || name[0]=='x') break; printf(" ÁÖ¼Ò:"); gets(addr); printf(" ÀüÈ­:"); gets(tel); fprintf(fp,"%-11s%-19s%-8s\n",name,addr,tel); } while (1); fclose(fp); } #È­ÀÏ¿¡ ÀÚ·á°¡ ¼ö·ÏµÇ´Â ÇüÅÂ: (1·¹ÄÚµå´ç 40byte : \nÀº 2Byte·Î ó¸®) +------------------------------------------------------------ |È« ±æµ¿ ¼­¿ï½Ã Áß±¸ ½Å´çµ¿ 432-3453\nÀÌ ¼ø½Å .. .. +---------------------------------------+-------------------- fprintf()ÇÔ¼ö´Â µû·Î º¯¼ö¿¡ ´ëÇÑ '±¸ºÐÀ» ÇØÁÖÁö¾Ê°í' ¼­½ÄÁ¦¾î ¹®ÀÚ¿­ ´ë·Î È­ÀÏ¿¡ ½á ÁÖ´Â ÇÔ¼öÀÓÀ» ¸í½ÉÇ϶ó. <¿¹Á¦6> ·£´ý È­ÀÏÀ» È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ Á¤¼ö nÀ» ÀÔ·ÂÇÏ¿© n¹ø° ·¹Äڵ带 Àо È­¸é¿¡ Ç¥½ÃÇ϶ó. <¸®½ºÆ®6> #include main() { char name[8],addr[21],tel[9]; int n; FILE *fp; fp=fopen("SAMPLE1.DAT","a+"); do { printf("¹øÈ£ÀÔ·Â:"); scanf("%d",&n); if (n<1) break; fseek(fp,40*(n-1),0); fgets(name,12,fp); fgets(addr,20,fp); fgets(tel,9,fp); printf("¼º¸í:%s\nÁÖ¼Ò:%s\nÀüÈ­¹øÈ£:%s\n", name,addr,tel); } while (1); fclose(fp); } C¿¡¼­´Â ÇöÀç ·¹Äڵ带 ÀоîµéÀÏ °æ¿ì ÇöÀçÀÇ È­ÀÏ Æ÷ÀÎÅÍ À§Ä¡¸¦ ÀÐÀ¸¸ç , È­ÀÏ Æ÷ÀÎÅÍ´Â ÀоîµéÀÎ ÀÚ·áÀÇ Å©±â¿¡ ¸ÂÃß¾î ÀÚµ¿À¸·Î Áõ°¡µÈ´Ù. ±×·¯ ³ª ´Ù¸¥ À§Ä¡¿¡ ÀÖ´Â ·¹Äڵ带 ÀоîµéÀÏ °æ¿ì¿¡´Â ÇÁ·Î±×·¡¸Ó°¡ Á÷Á¢ È­ÀÏ Æ÷ÀÎÅ͸¦ À̵¿½ÃÄÑ¾ß ÇÑ´Ù. fseek()ÇÔ¼ö·Î ÀоîµéÀÏ È­ÀÏ Æ÷ÀÎÅÍÀÇ À§Ä¡¸¦ ÁöÁ¤ÇÒ ¶§´Â '(ÀÐÀ» ·¹ÄÚµå ¹øÈ£-1)*·¹ÄÚµå´ç ¹ÙÀÌÆ®¼ö'·Î ÁöÁ¤ÇÏ¿©¾ß ÇÑ ´Ù. À§ ÇÁ·Î±×·¥¿¡¼­ fgets()ÇÔ¼öÀÇ ±æÀ̸¦ ¾µ ¶§´Â ¹Ýµå½Ã ÀÐ¾î µéÀÏ·Á´Â ¹® ÀÚº¸´Ù 1 ¸¹°Ô ¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº À§¿¡ ±â¼úÇÑ È­ÀÏ ÀÔÃâ·Â ÇÔ¼ö ºÎºÐÀ» È®ÀÎÇϱ⠹ٶõ´Ù. fscanf()ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© È­ÀÏÀ» ÀоîµéÀÏ °æ¿ì¿¡´Â fscanf()ÀÇ Æ¯¼º»ó ÀÚ·á³»¿¡ Æ÷ÇÔµÈ °ø¹éÀ» ±× ÀÚ·áÀÇ ³¡À¸·Î ÆÇ´ÜÇÏ¿© ¿¹±âÄ¡ ¾ÊÀº °á°ú°¡ ¹ß»ýÇÒ ¼öµµ ÀÖÀ¸´Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ÀÌ°ÍÀ¸·Î È­ÀÏ Ã³¸®¿¡ °üÇÑ ¼³¸íÀ» ¸¶Ä¡°Ú´Ù. È­ÀÏ Ã³¸® Áß¿¡¼­µµ ±âº»Àû ÀÎ °Í¸¸ ¾ð±ÞÇÏ¿´´Ù. »ç½Ç È­ÀÏ Ã³¸®´Â ÀÚ·á ±¸Á¶¿Í ¿¬°èµÇ¾î ¾Ë°í¸®ÁòÀÇ ÇÑ ºÐ¾ß¸¦ Â÷ÁöÇÏ°í ÀÖ´Ù. ³ªÁß¿¡ ½Ã°£ÀÌ ³ª¸é ÀڷᱸÁ¶¸¦ °øºÎÇØ º¸´Â °Í µµ ÁÁÀ» ¼º ½Í´Ù. ##### °¡º¯Àμö¸¦ »ç¿ëÇÏ´Â ÇÔ¼ö ÀÛ¼º¹ý ##### °¡º¯Àμö¸¦ »ç¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ ÇÔ¼ö·Î´Â printf°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °¡º¯ ÀûÀÎ °¹¼öÀÇ Àμö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù. void va_start(va_list param, lastfix); type va_arg(va_list param, type); void va_end(va_list param); À§ ÇÔ¼öµéÀº °¡º¯ÀûÀÎ °¹¼öÀÇ Àμö¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ÇÔ¼öµéÀÌ´Ù. ¼±¾ðÀº È­ÀÏ¿¡ µÇ¾î ÀÖ½À´Ï´Ù.. va_list param; - va_arg()ÇÔ¼ö¿Í va_end()ÇÔ¼ö¿¡¼­ »ç¿ëÇÒ Á¤º¸¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â ¹è¿­ È£ÃâµÈ ÇÔ¼ö°¡ °¡º¯ÀûÀÎ °¹¼öÀÇ Àμö¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ÀÌ ÀμöÀÇ µ¥ÀÌÅÍÇüÀ» va_listÇüÀ¸·Î ¼±¾ðÇØ ÁÖ¾î¾ß ÇÑ´Ù. va_start(va_list param, lastfix); - Àμö paramÀÌ È£ÃâÇÔ¼ö·Î ºÎÅÍ ÀεµµÈ ù¹ø° Àμö¸¦ ÁöÁ¤ÇÏ°Ô ÇÑ´Ù. lastfix´Â È£ÃâÇÔ¼öÀÇ ÀμöÁß "°íÁ¤ÀûÀÎ ¸¶Áö¸· Àμö"ÀÌ´Ù. ¿¹¸¦ µé¾î ÇÔ¼ö func(arf1, argf2, argf3, argv1, argv2, ...);¿¡¼­ argf1..argf3´Â ¹Ýµå½Ã, Ç×»ó »ç¿ëµÇ´Â ÀμöÀÌ°í, argv1, argv2, ... ´Â »ç¿ëÇÒ ¼öµµ ÀÖ°í, ¾ÊÀ» ¼öµµ ÀÖ´Â Àμö¶ó¸é lastfix·Î argf3À» ÁöÁ¤ÇÑ´Ù. va_arg(va_list param, type); - È£ÃâÇÔ¼ö·ÎºÎÅÍ ÀεµµÈ Àμö¸¦ ±¸ÇÏ°í paramÀÌ ´ÙÀ½¹ø Àμö¸¦ °¡¸£Å° °Ô ÇÑ´Ù. Áï, ù½ÇÇට´Â È£ÃâÇÔ¼ö·ÎºÎÅÍ ÀεµµÈ ù¹ø° °¡º¯ÀûÀÎ ÀÎ ¼ö(lastfix´ÙÀ½¹ø Àμö)¸¦ ±¸ÇÏ°í, µÎ¹ø° ½ÇÇà½Ã¿¡´Â µÎ¹ø° °¡º¯Àû ÀÎ Àμö¸¦ ±¸ÇÑ´Ù. va_end(va_list param); - È£ÃâÇÔ¼ö°¡ Á¤»óÀûÀ¸·Î È£ÃâÇÑ ÇÔ¼ö·Î º¹±ÍÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. ÀÌ ÇÔ ¼ö°¡ ½ÇÇàµÇ¸é, ³ª¸ÓÁö Àμö¸¦ ´õÀÌ»ó »ç¿ëÇÏÁö ¾Ê´Â´Ù. va_arg()ÇÔ ¼ö°¡ ÀεµµÈ ¸ðµç Àμö¸¦ ´ÙÀÐÀº °æ¿ì¿¡´Â ¹Ýµå½Ã ÀÌ ÇÔ¼ö¸¦ ½ÇÇà½Ã ÄÑÁà¾ß ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ·¹ÆÛ·±½º °¡À̵带 Âü°íÇϽñ⠹ٶø´Ï´Ù. ½ÇÁ¦ »ç¿ë¿¹¸¦ º¸½Ã¸é ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. <½ÇÁ¦ »ç¿ë¿¹> Á¤¼ö ÀÓÀÇ°³¸¦ ¹Þ¾Æ 16Áø¼ö·Î È­¸é¿¡ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥=exam.c=#include /* °¡º¯ÇÔ¼ö Áö¿øÇÔ¼ö ¼±¾ð Çì´õ */ #include /* printf()ÇÔ¼ö ¼±¾ð Çì´õ */ #include /* clrscr()ÇÔ¼ö ¼±¾ð Çì´õ */ void printxy(int fmt, ...); /* °¡º¯Àμö ÇÔ¼ö ¼±¾ð .ÀÇ °¹¼ö´Â 3°³ */ void main(void) { clrscr(); printxy(10, 10, 20, 30, 0); /* ÀμöÀÇ °¹¼ö´Â °¡º¯ÀûÀÌ´Ù */ } void printxy(int fmt, ...) /* ÀÎÀÚ´Â ¹Ýµå½Ã Çϳª´Â ÀÖ¾î¾ß ÇÔ */ { int i; va_list ap; /* Àμö¸®½ºÆ®¸¦ ÀúÀåÇÒ ¹è¿­(ap)À» va_listÇüÀ¸·Î ¼±¾ð*/ va_start(ap, fmt); /* ap°¡ È£ÃâÇÔ¼ö·Î ºÎÅÍ ÀεµµÈ ù¹ø° Àμö¸¦ */ /* ÁöÁ¤ÇÏ°Ô ÇÑ´Ù. fmt´Â È£ÃâÇÔ¼öÀÇ ÀμöÁß */ /* °íÁ¤ÀûÀÎ ¸¶Áö¸· ÀμöÀÌ´Ù. °í·Î ÀÌ ÇÔ¼ö´Â */ /* ÃÖ¼Ò ÇÑ°³ÀÌ»óÀÇ Àμö¸¦ °¡Áø´Ù */ while((i=va_arg(ap, int)) != 0) printf(" %d=%x\n", i, i); /* °¢ ÀÎÀÚ¸¦ Çϳª¾¿ ÃßÃâÇÏ¿© i·Î µÇµ¹¸®°í, */ /* ÀÎÀÚ°¡ 0ÀÌ µÉ¶§±îÁö 16Áø¼ö·Î º¯È¯ÇÏ¿© Ãâ·Â */ va_end(ap); /* È£ÃâÇÔ¼ö°¡ Á¤»óÀûÀ¸·Î º¹±ÍÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù */ } Âü°í·Î À§ÀÇ main()ÇÔ¼ö³»ÀÇ printxy(10,10,20,30,0);¿¡¼­ óÀ½ÀÇ 10Àº ¹Ý µå½Ã ÀÖ¾î¾ß ÇÏ´Â °ªÀÌ°í, ¸¶Áö¸·ÀÇ 0Àº Àμö¸®½ºÆ®°¡ ³¡³µ´Ù´Â °ÍÀ» Ç¥½Ã Çϱâ À§ÇÑ °ªÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °¡º¯ Àμö¸¦ »ç¿ëÇÏ´Â ÇÔ¼ö´Â ¹Ýµå½Ã °íÁ¤Àû ÀÎ ÀÎÀÚ Çϳª´Â ÀÖ¾î¾ß ÇÕ´Ï´Ù. (printf()ÇÔ¼ö¸¦ »ý°¢ÇØ º¸½Ê½Ã¿ä) ±×¸®°í while¹®¿¡¼­ ÀÎÀÚ°¡ ³¡³­´Ù´Â Ç¥½ÄÀ¸·Î ¸¶Áö¸·¿¡ 0À» »ç¿ëÇÏ¿´½À´Ï ´Ù. va_arg()ÇÔ¼ö´Â °¡º¯ÀÎÀÚ¸¦ µÇµ¹¸²À¸·Î °¡º¯ÀÎÀÚ°¡ ³¡³µ´Ù´Â Ç¥½ÄÀÌ ¹Ý µå½Ã ÀÖ¾î¾ß ÇÕ´Ï´Ù. À§ÀÇ printxy(10, ................ , 0); ¿¡¼­ ....... ºÎºÐ¿¡ ¿øÇÏ´Â ÀÎ ÀÚ¸¦ ³ÖÀ¸¸é(°¹¼ö»ó°ü¾ø½¿) Ãâ·ÂÇÒ¼ö°¡ ÀÖ½À´Ï´Ù. 6. CÀÇ ¼±Çà󸮱⠼±Çà󸮱â¶õ ¹®ÀÚ ±×´ë·Î ÇÁ·Î±×·¥ÀÌ ÄÄÆÄÀÏ µÇ±â Àü¿¡ 󸮵Ǵ ¸í·É¾î µéÀ» ¸»Çϴµ¥, ÀÌ´Â ÇÁ·Î±×·¡¸ÓÀÇ ÇÁ·Î±×·¡¹Ö È¿À²À» ³ôÇô ÁֹǷΠ¾Ë¾ÆµÑ ÇÊ¿ä°¡ ÀÖ´Ù. (1) ¸ÅÅ©·Î(macro) ¸ÅÅ©·Î¶õ ÀÏ·ÃÀÇ ¹®ÀÚ, »ó¼ö, ¼ö½ÄÀ» ÇϳªÀÇ ½Äº°ÀÚ(¹®ÀÚ¿­)·Î ó¸®ÇÏ´Â °ÍÀ¸·Î¼­, ÀÌ·¸°Ô Á¤ÀÇÇÑ ÈÄ¿¡´Â ½Äº°ÀÚ¸¸ ±â¼úÇϸé ÄÄÆÄÀÏ °úÁ¤¿¡¼­ ÁöÁ¤ ÇÑ ¼ö³ª ¼ö½ÄÀ¸·Î Àü°³µÈ´Ù. ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÏ¸é º¹ÀâÇÑ ¼ö½ÄÀ» °£´ÜÇÏ°Ô ±â¼úÇÒ ¼ö ÀÖÀ¸¸ç, ÇÁ·Î±×·¥ÀÇ ¼öÁ¤½Ã¿¡µµ ¸ÅÅ©·Î¸¸ »õ·Î Á¤ÀÇÇÏ¸é µÇ¹Ç·Î ¿ëÀÌÇÏ´Ù. ¸ÅÅ©·Î´Â º¯¼ö¿Í ±¸º°Çϱâ À§Çؼ­ º¸Åë ´ë¹®ÀÚ·Î ±â¼úÇϸç, ±× Çü½ÄÀº ´ÙÀ½°ú °°´Ù. #define ¸ÅÅ©·Î¸í ´ëü¹®ÀÚ¿­ ex> #define PIE 3.14159265 ¸ÅÅ©·Î Á¤ÀÇ´Â #define´ÙÀ½¿¡ ÇÏ°í, ¸ÅÅ©·Î¸íÀº º¯¼öÀÇ ±ÔÁ¤¿¡ ¸Â´Â ¹®ÀÚ ¿­À̸é Á¤ÀÇ È½¼ö¿¡ Á¦ÇѾøÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¸ÅÅ©·Î Á¤ÀÇ ´ÙÀ½¿¡´Â ; À» ±â¼úÇÏÁö ¾Ê´Â´Ù. <¸®½ºÆ®7> #define PRINT printf #define MAX 999 #define AND && #define OR || #define PIE 3.14159 #define AREA 4*r*r*PIE /*¸ÅÅ©·Î¸¦ ¸ÅÅ©·Î ¹®ÀÚ¿­·Î »ç¿ë*/ #define VOL 4.0/3*pow(r,3.0)*PIE /*±¸ÀÇ ºÎÇǸ¦ ±¸ÇÏ´Â °ø½Ä*/ #define SWAP(a,b) {int t; t=a; a=b; b=t;} /*µÎ º¯¼öÀÇ °ªÀ» ¹Ù²ãÁÖ´Â ¸ÅÅ©·Î ÇÔ¼ö*/ #define LARGE(a,b,c) { if (a if (a if (b /*¼¼°³ÀÇ ¼öÄ¡¸¦ Á¤·ÄÇÏ´Â ¸ÅÅ©·Î ÇÔ¼ö*/ <¸®½ºÆ®7>¿¡¼­ º¸µíÀÌ ¸ÅÅ©·Î´Â ´Ü¼øÇÑ »ó¼ö³ª ¼ö½ÄÀ» ġȯÇÏ´Â °ÍÀ¸·ÎºÎ ÅÍ º¹ÀâÇÑ ¹®ÀåÀ» ġȯÇÏ´Â °Í¿¡ À̸£±â±îÁö ¸Å¿ì ´Ù¾çÇÏ°Ô Á¤ÀÇÇÒ ¼ö ÀÖ ´Ù. µû¶ó¼­ ¸ÅÅ©·Î¸¦ ´Ü¼øÇÑ Ä¡È¯ÀÇ °æÁö¿¡¼­ ¹þ¾î³ª ÇϳªÀÇ ÇÔ¼ö·Î Á¤ÀÇ ÇØ È°¿ëÇϱ⵵ ÇÏ¸ç ½ÇÁ¦·Î C¿¡¼­´Â ¸ÅÅ©·Î°¡ ÇϳªÀÇ ÇÔ¼ö·Î Ãë±ÞµÈ´Ù. À§ ¿¡¼­ Á¤ÀÇÇÑ SWAP()³ª LARGE()µµ ¸ÅÅ©·Î ÇÔ¼öÀÌ´Ù. CÀÇ ³»Àå ÇÔ¼ö¿¡´Â ÀÏ¹Ý ÇÔ¼ö¿Í ¸ÅÅ©·Î ÇÔ¼öÀÇ µÎ °¡Áö°¡ Àִµ¥, ÀÏ¹Ý ÇÔ¼ö´Â ±× ½Çü°¡ ¶óÀ̺귯¸®(*.lib)¿¡ ÀÖÀ¸¸ç ¸µÅ©½Ã¿¡ ÇÁ·Î±×·¥¿¡ °áÇÕ µÈ´Ù. À̵é ÇÔ¼ö´Â ÇÁ·Î±×·¥ÀÇ ¿©·¯ °÷¿¡ ³ªÅ¸³ª´õ¶óµµ ±× º»Ã¼´Â ¸µÅ©½Ã ¿¡ ÇÑ ¹ø¸¸ °áÇյǹǷΠÇÁ·Î±×·¥ÀÇ Å©±â°¡ °ÅÀÇ º¯ÇÏÁö ¾Ê´Â´Ù. ±×·¯³ª ÇÔ ¼ö°¡ È£ÃâµÉ ¶§¸¶´Ù ÇÔ¼ö º»Ã¼°¡ ÀÖ´Â ºÎºÐÀ» ã¾Æ°¡±â ¶§¹®¿¡ ½ÇÇà½Ã°£ÀÌ ´Ù¼Ò ¶³¾îÁø´Ù. ¸ÅÅ©·Î ÇÔ¼ö´Â ½Çü°¡ Çì´õ È­ÀÏ(*.h)¿¡ ÀÖÀ¸¸ç, ±× ½Çü´Â ¸ÅÅ©·Î·Î Á¤ ÀǵǾî ÀÖÀ¸¹Ç·Î ÄÄÆÄÀϽÿ¡ ±× ÇÔ¼ö°¡ È£ÃâµÈ ºÎºÐ¿¡¼­ Àü°³µÈ´Ù. µû¶ó¼­ ¸ÅÅ©·Î ÇÔ¼ö´Â È£ÃâµÉ ¶§¸¶´Ù °¢°¢ Àü°³µÇ¾î ÇÁ·Î±×·¥ÀÇ Å©±â°¡ ±×¸¸Å­ Ä¿ ÁöÁö¸¸ ½ÇÇà¼Óµµ´Â Á» ´õ »¡¶óÁø´Ù. ÇÏÁö¸¸ ½ÇÇà¼ÓµµÀÇ Â÷¶ó´Â °ÍÀº Àΰ£ ÀÌ °ÅÀÇ ´À³¥ ¼ö ¾øÀ¸¹Ç·Î ±×·¸°Ô ³²¿ëÇÏÁö´Â ¾Ê´Â´Ù. ¸ÅÅ©·Î´Â »ó´çÈ÷ ÆíÇÑ ±â´ÉÀÌÁö¸¸ ¸ÅÅ©·Î Á¤ÀǸ¦ À߸øÇÏ¸é ºÎÀÛ¿ëÀ» ÀÏÀ¸ ų ¼ö ÀÖÀ¸¹Ç·Î ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. <¸®½ºÆ®8> #define MAX 256 #define BUF 10+MAX ........ main() { ... k=BUF * 10; ... <¸®½ºÆ®9> #define SQUAR(x) x*x ......... main() { ... a=2; b=3; k=SQUAR(a+b); ... <¸®½ºÆ®8>¿¡¼­ BUF´Â '(10+256)'À¸·Î Àü°³µÇÁö ¾Ê°í '10+256'À¸·Î Àü°³µÈ ´Ù. ±×·¯¹Ç·Î °á±¹ À̽ÄÀº 'k=10 + 256 * 10'ÀÌ µÈ´Ù. ±×·¯¹Ç·Î º»·¡ ÀÇ µµ´ë·Î 'k=(10 + 256) * 10'À¸·Î ÇÒ·Á¸é ¸ÅÅ©·Î¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. #define BUF (10 + MAX) <¸®½ºÆ®9>¿¡¼­ SQUAR´Â (a+b)*(a+b)·Î Àü°³µÇÁö ¾Ê°í 'a+b*a+b'·Î Àü°³µÇ ¾î Àǵµ¿Í´Â ´Ù¸¥ °á°ú°¡ Ãâ·ÂµÈ´Ù. ±×·¯¹Ç·Î 'k=(a+b)*(a+b)'ÀÇ Àǵµ¶ó¸é ´ÙÀ½°ú °°ÀÌ °ýÈ£±îÁö Á¤ÀÇÇØ¾ß ÇÑ´Ù. #define SQUAR(x) (x)*(x) ¸ÅÅ©·Î¸¦ ÇÔ¼öÀÇ ÇüÅ·Π¾µ °æ¿ì¿¡´Â ÁöÀûÇÑ ¹Ù¿Í °°ÀÌ Àμö¿Í üºÎ¸¦ °ý È£·Î ¹­¾îÁÖ´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù. ¸ÅÅ©·Î´Â ¹®ÀÚ¿­ÀÌ ±×´ë·Î Àü°³µÇ´Â °ÍÀÌÁö ±× °ªÀÌ Àü°³µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â »ç½ÇÀ» ¸í½ÉÇØ¾ß ÇÑ´Ù. ±×·¯¹Ç·Î ¾Õ¿¡¼­ ¿¹·Î µç #define BUF (10+MAX)ÀÇ °æ¿ìµµ #define BUF (10+(MAX))¿Í °°ÀÌ Àü°³µÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. »ç¿ëÀÌ ³¡³­ ¸ÅÅ©·Î´Â Ãë¼Ò°¡ °¡´ÉÇÏ´Ù. <Çü½Ä> #undef <¸ÅÅ©·Î¸í> ex> #undef SQUAR ±×·¯³ª ¸ÅÅ©·Î´Â È£Ãâ½Ã¿¡¸¸ Àü°³µÇ¸ç, ¸ÅÅ©·ÎÀÇ °¹¼ö°¡ Á¦ÇÑµÈ °Íµµ ¾Æ ´Ï¹Ç·Î ±»ÀÌ Ãë¼ÒÇÒ ÇÊ¿ä´Â ¾ø´Ù. (¸ÅÅ©·ÎÀÇ Ãë¼Ò´Â ÀÌ¹Ì Á¤ÀÇµÈ ¸ÅÅ©·ÎÀÇ °ªÀ» ¹Ù²Ù¾î ´Ù¸¥ °ªÀ» ÇÒ´çÇÏ·Á´Â °æ¿ì¿¡ ÀÌ¿ëµÈ´Ù. (2) È­ÀÏÀÇ Æ÷ÇÔ: #include ¼±Çà󸮱Ⱑ #include¸¦ ¸¸³ª¸é ±× ´ÙÀ½¿¡ ¿À´Â È­ÀÏÀ» Æ÷ÇÔ½ÃŲ´Ù. #include #include "myheader.h" #include "c:\tc\data\sample.h" < >ºÎÈ£´Â Ç¥ÁØ ½Ã½ºÅÛ µð·ºÅ丮¿¡¼­ È­ÀÏÀ» ã¾Æ Æ÷ÇÔ½ÃÅ°°í, " "ºÎÈ£´Â ÇöÀç ±× È­ÀÏÀÌ ÀÖ´Â µð·ºÅ丮(¶Ç´Â Á¤ÇØÁø µð·ºÅ丮)¿¡¼­ È­ÀÏÀ» ã¾Æ Æ÷ ÇÔ½ÃŲ´Ù. º¸Åë Çì´õÈ­ÀÏÀ» Æ÷ÇÔ½ÃÅ°´Âµ¥ º¸Åë ³»Àå ÇÔ¼öµéÀÌ ¼±¾ðµÈ ½Ã½ºÅÛ¿¡¼­ Á¦ °øÇÏ´Â Çì´õ È­ÀϵéÀº <>·Î Æ÷ÇÔ½ÃÅ°°í, »ç¿ëÀÚ°¡ ÀÚüÀûÀ¸·Î Á¦ÀÛÇÑ Çì´õ È­ÀÏÀº ""·Î Æ÷ÇÔÀ» ½ÃŲ´Ù. <¿¹Á¦7> »ç¿ëÀÚ Çì´õ È­ÀÏÀÇ »ç¿ë ¿¹Á¦ == bool.h È­ÀÏ Á¦ÀÛ == #define BOOL int #define TRUE 1 #define FALSE 0 == sample.c È­ÀÏ == #include #include "bool.h" main() { int ch; int count=0; BOOL whitesp(); while ( (ch=getchar()) != EOF ) if (whitesp(ch)) count++; printf("There are %d whitespace characters.\n", count); } BOOL whitesp(c) char c; { if (c == ' ' || c == '\n' || c == '\t') return(TRUE); else return(FALSE); } (3) ±× ¿ÜÀÇ ¼±Çà 󸮱â (#if, #ifdef, #ifndef, #else, #endif) À̰͵éÀº Á¶°ÇÀûÀÎ ÄÄÆÄÀÏÀ» °¡´ÉÇÏ°Ô ÇØ Áִµ¥, ´ëÇü ÇÁ·Î±×·¥¿¡¼­ ÁÖ ·Î »ç¿ëµÈ´Ù. #ifdef MAVIS #include "horse.h" #define STABLES 5 #else #include "cow.h" #define STABLES 15 #endif /* if ºí·°ÀÌ ³¡³²À» ¾Ë¸®´Â ±â´ÉÀ» ÇÑ´Ù. */ #ifdefÁöÁ¤¾î´Â ±× ´ÙÀ½¿¡ ¿À´Â ¸íĪ(MAVIS)ÀÌ ¼±Çà󸮱â·Î Á¤ÀǵǾúÀ¸ ¸é, ±× ÁöÁ¡¿¡¼­ ´ÙÀ½¿¡ ¿À´Â #else³ª #endifÀÌÀü±îÁö¿¡ ÀÖ´Â ¸í·ÉµéÀ» ó ¸®ÇÏ°Ô ÇÑ´Ù. Áï, #ifdefÀº ´ÙÀ½ÀÇ ¸íĪÀÌ Á¤ÀǵǾúÀ¸¸é ÂüÀÇ ÆÇ´ÜÀ» ÇÏ°í #ifndefÀº ´ÙÀ½ÀÇ ¸íĪÀÌ Á¤ÀÇ°¡ ¾È µÇ¾úÀ¸¸é ÂüÀÇ ÆÇ´ÜÀ» ³»¸°´Ù. #if SYS == "IBM" /* #if´Â if¹®°ú ±â´ÉÀÌ ºñ½ÁÇÏ´Ù */ #include "ibm.h" #endif ÀÌ·¯ÇÑ Á¶°Ç ÄÄÆÄÀÏÀÇ ¿ëµµ´Â ÇÁ·Î±×·¥ÀÇ È£È¯¼ºÀ» ³ôÀ̱â À§ÇÑ °ÍÀÌ´Ù. È­ÀÏ Ã³À½¿¡ ÀÖ´Â ¸î °³ÀÇ Áß¿äÇÑ Á¤ÀǸ¸ ¹Ù²Ù¸é ´Ù¸¥ ½Ã½ºÅÛÀ» À§ÇÑ ´Ù¸¥ È­ÀÏÀÌ Æ÷ÇÔµÇ°í ´Ù¸¥ °ªµéÀÌ ¼³Á¤µÈ´Ù. 7. typedef typedef¹®Àº ÇÁ·Î±×·¡¸Ó ÀڽŸ¸ÀÇ ¼öÇü¸íÀ» ¸¸µé¾î ÁØ´Ù. #define°ú ±â´É ÀÌ ºñ½ÁÇÏÁö¸¸ ¾Æ·¡¿Í °°Àº Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. 1) #define¿Í´Â ´Þ¸®, ´ÜÁö µ¥ÀÌÅÍ ¼öÇü¿¡¸¸ ±âÈ£ÀûÀÎ ¸íĪÀ» »ç¿ëÇÒ ¼ö °¡ ÀÖ´Ù. 2) typedef´Â ¼±Çà󸮱⿡ ÀÇÇØ Ã³¸®µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Ã³¸®µÇ´Â ³»Àå ¸í·É¾îÀÌ´Ù. <¸®½ºÆ®10> typedef float REAL; /* float¼öÇü¸íÀ» REALÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù */ typedef char *STRING; main() { REAL a=12.3243; STRING name="We are the world!"; ... À§¿¡¼­ STRING name;Àº char *name;°ú °°´Ù. ¶ÇÇÑ ±¸Á¶Ã¼¿¡ ´ëÇؼ­µµ »ç¿ëÇÒ ¼ö°¡ ÀÖ´Ù. typedef struct CompLex { float real; float imag; } COMPLEX; main() { COMPLEX son; ... (1) ÀÚÁÖ »ç¿ëµÇ´Â ¼öÇü¿¡ ´ëÇؼ­ ÀνÄÇϱ⠽¬¿î ¸íĪÀ» Á¦°øÇϱâ À§ÇÔ ÀÌ´Ù. (2) º¹ÀâÇÑ ¼öÇü¸íÀ» °£´ÜÇÏ°Ô Çϱâ À§Çؼ­ÀÌ´Ù. (3) ÇÁ·Î±×·¥ÀÇ À̽ÄÀ» ¿ëÀÌÇÏ°Ô Çϱâ À§Çؼ­ÀÌ´Ù. (2)ÀÇ °æ¿ìÀÇ ¿¹¸¦ µé¸é, typedef char *FRPTC () [5];´Â FRPTC°¡ char 5°³·Î ±¸¼ºµÈ ¹è¿­À» °¡¸®Å°´Â Æ÷ÀÎÅ͸¦ ¹ÝȯÇÏ´Â ÇÔ¼öÀÇ ¼öÇüÀÓÀ» ³ª Ÿ³½´Ù. ( FRPTC flump;´Â char *flump()[5];¿Í °°´Ù. ) Æ÷ÀÎÅÍÀÇ ±íÀº °÷À¸·Î µé¾î°¡¸é ¾ÆÁÖ º¹ÀâÇÏ°í Çò°¥¸®´Â ¼±¾ðµéÀÌ ¸¹ ÀÌÀÖ´Ù. ÀÌ ±ÛÀÇ ¼º°Ý°ú´Â ¸ÂÁö ¾ÊÀ¸¹Ç·Î ÀÚ¼¼ÇÑ ¼³¸íÀº ÇÇÇÏ°Ú´Ù. (3)ÀÇ °æ¿ìÀÇ ¿¹¸¦ µé¸é, ÇÁ·Î±×·¥ÀÌ 16ºñÆ® ¼ýÀÚ¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ À»¶§, ¾î¶² ½Ã½ºÅÛ(OS¿¡ µû¶ó)¿¡¼­´Â short°¡ ¾î¶² ½Ã½ºÅÛ¿¡¼­´Â int °¡ 16ºñÆ®ÀÌ´Ù. ±× ¶§ ÇÁ·Î±×·¥ÀÇ Ã¹¸Ó¸®¿¡ typedef int TWOBYTE;·Î ¼±¾ðÇØ µÎ°í int¸¦ short·Î¸¸ ¹Ù²Ù¾î ÁÖ¸é ÇÁ·Î±×·¥ À̽ÄÀ» °£ÆíÈ÷ ÇÒ ¼ö°¡ ÀÖ´Ù. 8. ¸í·ÉÇà ÀÎÀÚ(Command-line arguments) ¾Æ·¡ ÇÑ±Û »ç¿ë½Ã µµ½º¿¡¼­ hwp c:\data\letter.hwp¿Í °°ÀÌ ¸í·ÉÀ» ³»¸® ¸é ÇÁ·Î±×·¥À» ½ÃÀÛ°ú µ¿½Ã¿¡ letter.hwpÈ­ÀÏÀÌ ¶ß´Â °ÍÀ» ¾Ë°í ÀÖÀ» °ÍÀÌ ´Ù. ÀÌ·¯ÇÑ °ÍÀ» ¾î¶»°Ô ±¸ÇöÇÒ±î? ¸í·ÉÇàÀ̶õ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÅ°±â À§ÇØ ¸í·É¾î¸¦ ÀÔ·ÂÇØ ³Ö´Â ÇàÀ» ¸»ÇÑ ´Ù. ¿ì¸®°¡ º¸Åë ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ main()À̶ó°í¸¸ ±â¼úÇÏ¿´´Âµ¥, main() ÇÔ¼öµµ ÀÎÀÚ°¡ Á¸ÀçÇÑ´Ù. ¾Æ·¡ ¿¹Á¦¸¦ º¸ÀÚ. <¿¹Á¦8> ¸í·ÉÇà ÀÎÀÚ¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¥ - I <¸®½ºÆ®11> È­ÀϸíÀ» copystr.c¶ó°í ÇÏÀÚ. #include main(argc, argv) int argc; char *argv[]; { int c; for (c=1;c < argc;c++) printf("%s",argv[c]); printf("\n"); } À§ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏ ½ÃŲ ÈÄ, ¸í·ÉÇà¿¡¼­ copystr My name is robocap. À̶ó°í ÀÔ·ÂÇϸé, My name is robocap.À̶ó°í Ãâ·ÂÇÑ ÈÄ ÇÁ·Î±×·¥À» Á¾·á ÇÑ´Ù. main()ÇÔ¼ö´Â µÎ °¡Áö Àμö¸¦ °¡Áø´Ù. ù¹ø ° ÀÎÀÚ(argc)´Â ¸í·É¾î¿¡ µû ¸£´Â ¹®ÀÚ¿­ÀÇ °¹¼ö¸¦ ³ªÅ¸³½´Ù. argc´Â argument countÀÇ ¾àÀڷνá, ´Ù¸¥ ÀÎÀÚ¸íµµ »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª °ü·ÊÀûÀ¸·Î arg> -------------------------------------------------------------------------------- Transfer interrupted! ?Çϴµ¥, À§ÀÇ ¿¹Á¦´Â 5°³ÀÇ ¹®ÀÚ¿­À» °¡Áø´Ù. µÎ¹ø° ÀÎÀÚ(argv : argument value)´Â ¹®ÀÚ¿­ Æ÷ÀÎÅÍ ¹è¿­ÀÌ´Ù. ¸í·ÉÇà ÀÇ °¢ ¹®ÀÚ¿­Àº ±× Àڽſ¡ ´ëÇÑ Æ÷ÀÎÅÍ·Î ¹è¿­¿¡ ÀúÀåµÈ´Ù. À§ÀÇ °æ¿ì, argv[0]Àº ÇÁ·Î±×·¥¸í copystrÀ» °¡¸®Å²´Ù. argv[1]="My" argv[4]="robocap."À» °¢°¢ °¡¸®Å²´Ù. argv[2]="name" argv[3]="is" <¿¹Á¦9> <#1Æí>ÀÇ <¿¹Á¦2>¸¦ ¸í·ÉÇà ÀÎÀÚ¸¦ »ç¿ëÇÏ´Â À¶Å뼺 ÀÖ´Â ÇÁ·Î±× ·¥À¸·Î ¹Ù²ã º¸ÀÚ. <¸®½ºÆ®12> ÇÁ·Î±×·¥¸íÀÌ son.c¶ó¸é, #include main(int argc,char *argv[]) { FILE *in; int ch; if (argc==1) printf("Usage: son filename.ext\n"); else { if ((in=fopen(argv[1],"r")) != NULL) { while ((ch=getc(in)) != EOF) putc(ch,stdout); fclose(in); } else printf("file not found..\n"); } } 9. °­Á¸¦ ³¡³»¸ç.. ÃàÇÏÇÕ´Ï´Ù! ´ç½ÅÀº ÀÌÁ¦ CÀÇ Ãʺ¸ÀÚ µüÁö¸¦ ¶¼°í Áß±ÞÀÚ·Î µµ¾àÇÒ ¼ö ÀÖ ´Â ¹ßÆÇÀ» ¸¶·ÃÇϼ̽À´Ï´Ù. ³¡±îÁö °­Á¸¦ ÂÑ¾Æ¿Í ÁֽŠ°Í¿¡ ´ëÇؼ­ Á¤¸» °¨»çµå¸³´Ï´Ù. ±×¸®°í ±× ²ö±â¿¡ ¹Ú¼ö¸¦ º¸³À´Ï´Ù. ¦¦¦¦¦!