12-3.¹®ÀÚ¿­ ¿¬½À

12-3-°¡.Ç¥ÁØ ÇÔ¼ö ±¸Çö

C ¹®¹ýÀº ¹®ÀÚ¿­ ŸÀÔÀ» Á¦°øÇÏÁö ¾Ê´Â ´ë½Å dzºÎÇÑ ¹®ÀÚ¿­ °ü¸® ÇÔ¼ö¸¦ Á¦°øÇϹǷΠ¹®ÀÚ¿­À» »ç¿ëÇϴµ¥ º° ºÒÆíÇÔÀº ¾ø´Ù. ¹®ÀÚ¿­Àº ¹è¿­ ÇüÅ·ΠǥÇöµÇ¸ç ¹è¿­Àº °ð Æ÷ÀÎÅͶó°í ÇÒ ¼ö ÀÖÀ¸¹Ç·Î C Ç¥ÁØ ¹®ÀÚ¿­ ÇÔ¼öµéÀº °ÅÀÇ Æ÷ÀÎÅÍ·Î ±¸ÇöµÇ¾î ÀÖ´Ù. ±×·¡¼­ Ç¥ÁØ ÇÔ¼öµéÀÇ ¸ð¹æÀÛÀ» Á¦ÀÛÇØ º¸¸é ¹®ÀÚ¿­À» Á» ´õ Àß ÀÌÇØÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó C Æ÷ÀÎÅÍ¿¡ ´ëÇÑ »ý»ýÇÑ ½Ç½ÀÀ» ÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­ °ü·Ã C Ç¥ÁØ ÇÔ¼ö¸¦ »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö·Î ´Ù½Ã ÀÛ¼ºÇØ º» °ÍÀÌ´Ù. C Ç¥ÁØ ÇÔ¼öÀÇ ±¸ÇöÀº ÄÄÆÄÀÏ·¯ Á¦Àۻ縶´Ù ´Ù¸£°í °íµµ·Î ÃÖÀûÈ­µÇ¾î À־ ÀÌ¿Í ¿ÏÀüÈ÷ °°Áö´Â ¾Ê°ÚÁö¸¸ °ÑÀ¸·Î µå·¯³ª´Â µ¿ÀÛÀº µ¿ÀÏÇÏ´Ù. ÀÌ ½Ç½ÀÀ» ÅëÇØ ÀÌ¹Ì Á¦°øµÇ´Â Ç¥ÁØ ÇÔ¼öµéÀÇ ³»ºÎ ±¸ÇöÀÌ ¾î¶»°Ô µÇ¾î ÀÖ´ÂÁö »ó»óÇØ º¼ ¼ö ÀÖÀ½Àº ¹°·ÐÀÌ°í Ç¥ÁØ ÇÔ¼ö°¡ Á¦°øÇÏÁö ¾Ê´Â ±â´ÉÀ» Á÷Á¢ ¸¸µé¾î ¾µ ¼ö ÀÖ´Â ÀÀ¿ë·ÂÀ» Å°¿ï ¼ö ÀÖ´Ù.

 

¿¹ Á¦ : strfunc

#include <Turboc.h>

 

void my_puts(const char *str)

{

     while (*str) putch(*str++);

     putch('\n');

}

 

void my_puts2(const char *str)

{

     int i;

 

     for (i=0;str[i];i++) {

          putch(str[i]);

     }

     putch('\n');

}

 

char *my_strcpy(char *dest, const char *src)

{

     char *d=dest;

     while (*dest++ = *src++) {;}

     return d;

}

 

size_t my_strlen(const char *str)

{

     const char *p;

 

     for (p=str;*p;p++) {;}

     return p-str;

}

 

size_t my_strlen2(const char *str)

{

     int i;

 

     for (i=0;str[i];i++) {;}

     return i;

}

 

char *my_strcat(char *dest, const char *src)

{

     my_strcpy(dest+my_strlen(dest),src);

     return dest;

}

 

char *my_strchr(const char *string,int c)

{

     while (*string) {

          if (*string == c) {

              return (char *)string;

          }

          string++;

     }

     return NULL;

}

 

char *my_strstr(const char *string,const char *strSearch)

{

     const char *s,*sub;

 

     for (;*string;string++) {

          for (sub=strSearch,s=string;*sub && *s && *s == *sub;sub++,s++) {;}

          if (*sub == 0) return (char *)string;

     }

     return NULL;

}

 

void main()

{

     char dest[256];

 

     my_puts("Korea");

     my_puts2("Çѱ۵µ Àß µÈ´Ù.");

 

     my_puts(my_strcpy(dest,"my string copy function test"));

 

     printf("¹®ÀÚ¿­ÀÇ ±æÀÌ´Â %dÀÔ´Ï´Ù.\n",my_strlen("1234"));

     printf("¹®ÀÚ¿­ÀÇ ±æÀÌ´Â %dÀÔ´Ï´Ù.\n",my_strlen2("123456789"));

    

     char str[128]="abcd";

     my_puts(my_strcat(str,"efgh"));

 

     printf("o°¡ %s½À´Ï´Ù.\n",my_strchr("notebook",'o')==NULL ? "¾ø":"ÀÖ");

     printf("z°¡ %s½À´Ï´Ù.\n",my_strchr("notebook",'z')==NULL ? "¾ø":"ÀÖ");

     printf("under°¡ %s½À´Ï´Ù.\n",my_strstr("misunderstand","under")==NULL ? "¾ø":"ÀÖ");

     printf("above°¡ %s½À´Ï´Ù.\n",my_strstr("misunderstand","above")==NULL ? "¾ø":"ÀÖ");

}

 

»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼öµéÀº Ç¥ÁØ ÇÔ¼ö¿Í ºñ½ÁÇÑ À̸§À» »ç¿ëÇ쵂 ±¸ºÐÀº µÇ¾î¾ß ÇϹǷΠ¸ðµÎ my_·Î ½ÃÀÛÇϵµ·Ï Çß´Ù. main¿¡¼­´Â ÀÌ ÇÔ¼öµéÀÌ Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö¸¦ Å×½ºÆ®ÇÏ´Â °£´ÜÇÑ Äڵ尡 ÀÛ¼ºµÇ¾î ÀÖ´Ù. ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

Korea

Çѱ۵µ Àß µÈ´Ù.

my string copy function test

¹®ÀÚ¿­ÀÇ ±æÀÌ´Â 4ÀÔ´Ï´Ù.

¹®ÀÚ¿­ÀÇ ±æÀÌ´Â 9ÀÔ´Ï´Ù.

abcdefgh

o°¡ ÀÖ½À´Ï´Ù.

z°¡ ¾ø½À´Ï´Ù.

under°¡ ÀÖ½À´Ï´Ù.

above°¡ ¾ø½À´Ï´Ù.

 

my_puts

Ç¥ÁØ ÇÔ¼öÀÇ puts¸¦ ±×´ë·Î ´Ù½Ã ¸¸µé¾î º» °ÍÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ¹®ÀÚ¿­ÀÌ ÀúÀåµÈ ½ÃÀÛ ¹øÁö¸¦ Àü´Þ¹Þ¾Æ NULL ¹®ÀÚ¸¦ ¸¸³¯ ¶§±îÁö Áï, ¹®ÀÚ¿­ ³¡±îÁö ¸ðµÎ Ãâ·ÂÇÑ ÈÄ ´ýÀ¸·Î °³Çà ÄÚµå±îÁö Ãâ·ÂÇϵµ·Ï µÇ¾î ÀÖ´Ù. ¹®ÀÚ¿­ Ãâ·Â ÄÚµå´Â while¹® Çϳª·Î ±¸¼ºµÈ´Ù. *strÀÌ NULLÀÌ ¾Æ´Ñ µ¿¾È *strÀ» Àоî putch·Î Ãâ·ÂÇϱ⸦ ¹Ýº¹Çϸ鼭 str++·Î °è¼Ó µÚ·Î À̵¿ÇÏ¸é ¸ðµç ¹®ÀÚµéÀÌ ¼ø¼­´ë·Î Ãâ·ÂµÉ °ÍÀÌ´Ù. putchÀÇ Àμö°¡ *str++·Î µÇ¾î ÀÖ¾î ¸ÕÀú Ãâ·ÂÇÑ ÈÄ ´ÙÀ½ ¹øÁö·Î À̵¿Çϵµ·Ï µÇ¾î Àִµ¥ *++strÀ̳ª (*str)++ µûÀ§·Î Àû¾î¼­´Â ¾ÈµÈ´Ù.

*strÀÌ NULLÀÏ ¶§ while ·çÇÁ¸¦ Å»ÃâÇÏ¸ç ¸¶Áö¸·À¸·Î ¸®ÅÏÇϱâ Àü¿¡ '\n'À» Ãâ·ÂÇÏ¿© °³ÇàÇÑ´Ù. ¿¹Á¦¿¡´Â µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÏ´Â my_puts2 ÇÔ¼öµµ ÀÛ¼ºµÇ¾î Àִµ¥ µÎ ÇÔ¼ö¸¦ ºñ±³ÇØ º¸ÀÚ. my_puts ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ strÀ» Æ÷ÀÎÅÍ·Î ÀνÄÇÑ °ÍÀÌ°í my_puts2´Â ¹è¿­·Î ÀνÄÇÏ¿© ÷ÀÚ ¿¬»êÀ» ÅëÇØ ¹®ÀÚ¿­À» Ãâ·ÂÇϴµ¥ Ãâ·Â °úÁ¤Àº ºñ½ÁÇÑ´Ù. ÷ÀÚ i¸¦ 0¿¡¼­ ½ÃÀÛÇÏ¿© °è¼Ó Áõ°¡½ÃÅ°¸ç str[i]¸¦ Ãâ·ÂÇϱ⸦ str[i]°¡ NULLÀÌ ¾Æ´Ñ µ¿¾È ¹Ýº¹ÇÏ¸é °á±¹ str ¹è¿­ÀÇ ¸ðµç ¹®ÀÚµéÀÌ Ãâ·ÂµÈ´Ù.

µÎ ¹æ½ÄÀÇ ½ÇÇà °á°ú´Â ¿ÏÀüÈ÷ µ¿ÀÏÇÏÁö¸¸ ³»ºÎÀûÀÎ ¿¬»ê °úÁ¤Àº ¾à°£ ´Ù¸£´Ù. my_puts´Â Æ÷ÀÎÅ͸¦ Áõ°¡½ÃÅ°¸é¼­ Æ÷ÀÎÅÍ À§Ä¡ÀÇ °ªÀ» ¹Ù·Î ÀÐÀ¸¹Ç·Î ¼Óµµ°¡ ºü¸£´Ù´Â ÀåÁ¡ÀÌ ÀÖÁö¸¸ Ãâ·ÂÀÌ ³¡³­ ÈÄ strÀμöÀÇ À§Ä¡°¡ º¯°æµÈ´Ù´Â Ư¡ÀÌ ÀÖ´Ù. my_puts2´Â º°µµÀÇ Áö¿ªº¯¼ö°¡ ÇÊ¿äÇÏ°í ¸Å ¹®ÀÚ¸¦ Ãâ·ÂÇÒ ¶§¸¶´Ù ÷ÀÚ ¿¬»êÀ» ÇϹǷΠ´õ ´À¸®Áö¸¸ ½ÃÀÛ ¹øÁöÀÎ strÀ» ±×´ë·Î À¯ÁöÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. puts ÇÔ¼öÀÇ °æ¿ì´Â ½ÃÀÛ ¹øÁö¸¦ º°µµ·Î À¯ÁöÇÒ ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î my_puts°¡ ÈξÀ ´õ ÇÕ¸®ÀûÀÎ ¼±ÅÃÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ´Ù¸¥ ¹®ÀÚ¿­ ÇÔ¼öµéÀº ¿¬»ê ÈÄ¿¡ ½ÃÀÛ ¹øÁö¸¦ ´Ù½Ã Àоî¾ß ÇÏ´Â °æ¿ì°¡ Àִµ¥ ÀÌ·² ¶§´Â ½ÃÀÛ ¹øÁö¸¦ Á÷Á¢ À̵¿½ÃÅ°´Â ¹æ¹ýÀ» ¾µ ¼ö ¾ø´Ù.

my_strcpy

¹®ÀÚ¿­À» º¹»çÇÏ´Â my_strcpy ÇÔ¼ö´Â ¼¼ ÁÙ·Î ÀÛ¼ºµÇ¾î ÀÖÁö¸¸ ½ÇÁ¦·Î º¹»ç¸¦ ÇÏ´Â ÄÚµå´Â ´Ü ÇÑ ÁÙ »ÓÀÌ´Ù. ÇϳªÀÇ while ¹®À¸·Î º¹»ç µ¿ÀÛÀ» ±â¼úÇÒ ¼ö Àִµ¥ *srcÀÇ ¹®ÀÚ¸¦ *dest¿¡ ´ëÀÔÇÏ´Â °úÁ¤À» *src°¡ NULLÀÏ ¶§±îÁö ¹Ýº¹ÇÏ´Â °ÍÀÌ´Ù.

srcÀ§Ä¡ÀÇ ¹®ÀÚ¸¦ destÀ§Ä¡¿¡ ´ëÀÔÇÑ ÈÄ µÎ Æ÷ÀÎÅ͸¦ Áõ°¡½ÃÅ°°í ´ëÀÔµÈ °á°ú°¡ NULLÀÎÁö Á¡°ËÇÑ´Ù. ++ ¿¬»êÀÚ¸¦ ÈÄÀ§ÇüÀ¸·Î »ç¿ëÇßÀ¸¹Ç·Î NULL ¹®ÀÚ±îÁöµµ º¹»ç ´ë»óÀÌ´Ù. ÈÄÀ§ Áõ°¡ ¿¬»êÀÚ¿Í ´ëÀÔ ¿¬»êÀÚÀÇ ¸®ÅÏ°ª±îÁö È°¿ëÇÏ¿© ÇÑ ¹®ÀåÀ¸·Î º¹»ç µ¿ÀÛÀ» ¾ÐÃàÀûÀ¸·Î Ç¥ÇöÇÏ°í ÀÖ´Ù. ÆòÀÌÇÏ°Ô Ç®¾î¾´´Ù¸é ´ÙÀ½°ú °°ÀÌ Ç®¾î ¾µ ¼ö¹Û¿¡ ¾øÀ» °ÍÀÌ´Ù.

 

for (;;) {

     *dest=*src;

     if (*src == 0) {

          break;

     }

     dest++;

     src++;

}

 

ÀÏ´Ü ´ëÀÔÇÏ°í ³Î ¹®ÀÚÀÏ ¶§ Å»ÃâÇÏ¸ç ±×·¸Áö ¾ÊÀ» °æ¿ì ´ÙÀ½ ¹øÁö·Î À̵¿ÇÑ´Ù. º¹»ç¿Í À̵¿ Áß°£¿¡ Á¶°Ç Á¡°ËÀ» ÇØ¾ß ÇϹǷΠ¹«ÇÑ ·çÇÁ¸¦ ±¸¼ºÇÏ°í º¹»ç ÈÄ¿¡ Å»ÃâÇØ¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ do while¹®À̳ª while¹®À¸·Î ÀÛ¼ºÇϸé NULL Á¾·á ¹®ÀÚ°¡ º¹»ç ´ë»ó¿¡¼­ Á¦¿Ü µÇ¹Ç·Î ¿Ã¹Ù¸¥ º¹»ç°¡ ¾Æ´Ï´Ù.

 

do {

     *dest=*src;

     dest++;

     src++;

} while (*src != 0);

while(*src != 0) {

     *dest=*src;

     dest++;

     src++;

};

 

++ ¿¬»êÀÚ¿Í ´ëÀÔ ¿¬»êÀÚÀÇ ¸®ÅÏ°ªÀ» È°¿ëÇϸç ÀÌ·± Äڵ带 ÇÑ ÁٷΠǥÇöÇÒ ¼ö ÀÖ´Ù. *ptr++À̶ó´Â Ç¥Çö½ÄÀÌ ¾ó¸¶³ª ÇÔÃàÀûÀÌ°í Æí¸®ÇÑÁö ½Ç°¨ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

my_strcpy ÇÔ¼ö´Â ¹®ÀÚ º¹»ç ÄÚµå ¿Ü¿¡µµ º°µµÀÇ Äڵ带 ´õ °¡Áö°í Àִµ¥ ÀÌ ÄÚµå´Â Ç¥ÁØ strcpy ÇÔ¼ö¿Í µ¿ÀÛÀ» ¿ÏÀüÈ÷ ÀÏÄ¡ ½ÃÅ°±â À§ÇÑ °ÍÀÌ´Ù. strcpy ÇÔ¼ö´Â º¹»ç ÈÄ destÀÇ ¹øÁö¸¦ ¸®ÅÏÇϵµ·Ï µÇ¾î Àִµ¥ ÀÌ´ë·Î ±¸ÇöÇÏÀÚ¸édestÀÇ ¿ø·¡ À§Ä¡¸¦ ÀúÀåÇØ ³õ°í º¹»ç ÈÄ¿¡ ±× °ªÀ» ¸®ÅÏÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇØ¾ß º¹»çÇÑ °á°ú¸¦ puts ÇÔ¼ö·Î °ð¹Ù·Î Ãâ·ÂÇÒ ¼ö ÀÖ´Ù. ¸®ÅÏÀ» ÇÏÁö ¾Ê´Â´Ù¸é my_strcpy ÇÔ¼ö´Â ÇÑ ÁÙ·Î ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.

Ç¥ÁØ strcpy ÇÔ¼ö´Â destÀÇ ±æÀÌ¿¡ ´ëÇؼ­´Â ¾î¶°ÇÑ °¡Á¤µµ ÇÏÁö ¾ÊÀ¸¸ç ¹è¿­ ¹üÀ§¸¦ ³Ñ¾î¼­´ÂÁö Á¡°ËÇÏÁöµµ ¾Ê´Â´Ù. ±×·¡¼­ º¹»çÇÒ ¹öÆÛÀÇ Å©±â¸¦ È£Ãâ¿ø¿¡¼­ ¾Ë¾Æ¼­ ÃæºÐÇÏ°Ô Á¦°øÇØ¾ß ÇÑ´Ù. my_strcpy ÇÔ¼öµµ ¸¶Âù°¡ÁöÀε¥ Äڵ带 º¸´Ù½ÃÇÇ ¾îµð°¡ destÀÇ ³¡À̶ó´Â Á¤º¸¸¦ ÀüÇô ¹Þ¾ÆµéÀÌÁö ¾Ê±â ¶§¹®ÀÌ´Ù. ¹è¿­ ¹üÀ§¸¦ Á¡°ËÇÏÁö ¾Ê´Â °ÍÀº C ¾ð¾îÀÇ Æ¯Â¡À̱⵵ ÇÏÁö¸¸ ´õ ±Ùº»ÀûÀ¸·Î´Â ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®¿¡ º°µµÀÇ ³¡ Ç¥½ÄÀÌ ¾ø¾î ¾î¿ ¼ö°¡ ¾ø´Ù.

my_strlen

¹®ÀÚ¿­ÀÇ ±æÀ̸¦ Á¶»çÇÏ´Â my_strlen ÇÔ¼ö´Â ´Ù¼Ò ½±´Ù. str¿¡¼­ ½ÃÀÛÇؼ­ NULL ¹®ÀÚ¸¦ ¸¸³¯ ¶§±îÁö Æ÷ÀÎÅ͸¦ °è¼Ó Áõ°¡½ÃŲ ÈÄ p-strÀ» ¸®ÅÏÇÏ¸é µÈ´Ù. strÀ» Á÷Á¢ À̵¿ÇØ ¹ö¸®¸é ÃÖÃÊ ½ÃÀÛ À§Ä¡¸¦ ¾Ë ¼ö ¾ø°Ô µÇ¹Ç·Î strÀº ±× ÀÚ¸®¿¡ À¯ÁöÇÑ Ã¤·Î º°µµÀÇ Æ÷ÀÎÅÍ º¯¼ö p¸¦ À̵¿½ÃÄÑ¾ß ÇÑ´Ù. Æ÷ÀÎÅͳ¢¸®´Â »¬¼ÀÀÌ °¡´ÉÇÏ°í ±× °á°ú´Â Á¤¼öÇüÀ̹ǷΠNULL ¹®ÀÚ À§Ä¡ÀÇ p¿Í ½ÃÀÛ À§Ä¡ strÀÇ »¬¼À ¿¬»ê °á°ú°¡ °ð ¹®ÀÚ¿­ÀÇ ±æÀÌÀÌ´Ù.

´Ù¸¥ ¹æ¹ýÀ¸·Î´Â Æ÷ÀÎÅ͸¦ À̵¿½ÃÅ°´Â ´ë½Å ÷ÀÚ i¸¦ Áõ°¡½ÃÄÑ°¡¸ç str[i]°¡ NULLÀÏ ¶§±îÁö ¹Ýº¹ÇÑ ÈÄ¿¡ i¸¦ ¸®ÅÏÇÏ¸é µÈ´Ù. my_strlen2 ÇÔ¼ö°¡ ÀÌ ¹æ½ÄÀ¸·Î ÀÛ¼ºµÇ¾ú´Ù. ÃÖÁ¾ÀûÀ¸·Î ¸®ÅÏÇÒ °ªÀº ÷ÀÚ ±× ÀÚüÀ̹ǷΠ°£´ÜÇÏ°Ô ±¸ÇÒ ¼ö ÀÖÁö¸¸ NULL ¹®ÀÚ Á¡°Ë¿¡ ¸Å¹ø ÷ÀÚ ¿¬»êÀ» »ç¿ëÇϹǷΠ¼Óµµ´Â ÈξÀ ´õ ´À¸®´Ù. ¹®ÀÚ¿­ÀÌ ±ä °æ¿ì´Â ÀÌ ¼Óµµ Â÷ÀÌ°¡ ¹«½Ã ¸øÇÒ Á¤µµÀ̹ǷΠ÷ÀÚ¸¦ ¾²´Â ¹æ¹ýº¸´Ù´Â Æ÷ÀÎÅ͸¦ ¹Ù·Î »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÈξÀ ´õ À¯¸®ÇÏ´Ù.

my_strcat

¹®ÀÚ¿­À» ¿¬°áÇÏ´Â strcat ÇÔ¼ö´Â ¾ÆÁÖ °£´ÜÇÏ´Ù. ¿¬°áÇÑ´Ù´Â °ÍÀº ¹®ÀÚ¿­ ³¡¿¡ »õ·Î¿î ¹®ÀÚ¿­À» º¹»çÇÏ´Â °Í°ú °°À¸¹Ç·Î ¹®Á¦¸¦ Á¶±Ý ¹Ù²ã¼­ »ý°¢ÇØ º¸¸é ½±´Ù. destÀÇ Á¦ÀÏ ³¡ À§Ä¡·Î À̵¿ÇÑ ÈÄ ÀÌ À§Ä¡¿¡ src¸¦ º¹»çÇØ ³Ö±â¸¸ ÇÏ¸é µÈ´Ù.

¾Õ¿¡¼­ ¹®ÀÚ¿­ º¹»ç ÇÔ¼ö¿Í ±æÀ̸¦ ±¸ÇÏ´Â ÇÔ¼ö¸¦ ÀÌ¹Ì ¸¸µé¾î µÎ¾úÀ¸¹Ç·Î ÀÌ ÇÔ¼öµéÀÇ Á¶ÇÕ¸¸À¸·Îµµ ¿¬°á ÇÔ¼ö¸¦ ½±°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. my_strcat¿¡¼­´Â ¾Õ¿¡¼­ ¸¸µç »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¸¦ ½á ºÃ´Âµ¥ Ç¥ÁØ ÇÔ¼ö¸¦ ½á¼­ ¸¸µé¾îµµ ¸¶Âù°¡Áö´Ù.

my_strchr

ÀÌ ÇÔ¼ö´Â ¹®ÀÚ¿­¿¡¼­ ¹®ÀÚ¸¦ °Ë»öÇÑ´Ù. ¹®ÀÚ ¹è¿­À» ¼øȸÇϸ鼭 ÇØ´ç À§Ä¡ÀÇ ¹®ÀÚ°¡ cÀÌ¸é ±× Æ÷ÀÎÅ͸¦ ¹Ù·Î ¸®ÅÏÇÏ°í NULL Á¾·á ¹®ÀÚ¸¦ ¸¸³ª¸é NULLÀ» ¸®ÅÏÇÑ´Ù. ´õ ª°Ô ÁÙÀÌ¸é ´ÙÀ½ µÎ ÁÙ·Î ¾ÐÃàÇÒ ¼öµµ ÀÖ´Ù.

 

for (;*string!=c && *string;string++) {;}

return *string ? (char *)string:NULL;

 

ÀÌ ÇÔ¼ö°¡ ³¡³¯ Á¶°ÇÀº °á±¹ ¹®ÀÚ¸¦ ã°Å³ª ¾Æ´Ï¸é ¹®ÀÚ¿­ ³¡±îÁö °Ë»öÇߴµ¥ ¹®ÀÚ°¡ ¹ß°ßµÇÁö ¾Ê°Å³ª µÑ ÁßÀÇ ÇϳªÀ̹ǷΠÀÌ µÎ Á¶°ÇÀÌ ¸¸Á·ÇÏÁö ¾ÊÀ» ¶§±îÁö stringÀ» À̵¿½ÃÅ°¸é¼­ ·çÇÁ¸¦ µ¹´Ù°¡ ·çÇÁ°¡ ³¡³µÀ» ¶§ *string À§Ä¡°¡ NULLÀÎÁö ¾Æ´ÑÁö¸¸ ÆÇ´ÜÇÏ¸é µÈ´Ù.

my_strstr

ºÎºÐ ¹®ÀÚ¿­À» °Ë»öÇÏ´Â my_strstr ÇÔ¼ö´Â Á¶±Ý º¹ÀâÇÏ´Ù. ÀÏ·ÃÀÇ ¹®ÀÚµéÀÌ ¿¬¼ÓÀûÀ¸·Î Á¸ÀçÇÏ´Â À§Ä¡¸¦ ã¾Æ¾ß ÇϹǷΠÀüü ¹®ÀÚ¿­ ·çÇÁ ¾È¿¡¼­ ºÎºÐ ¹®ÀÚ¿­ ·çÇÁ¸¦ ¶Ç ±¸¼ºÇØ¾ß ÇÑ´Ù. Àüü ¹®ÀÚ¿­ÀÇ °¢ À§Ä¡¿¡ ´ëÇØ s´Â ÇöÀç À§Ä¡¿¡¼­ºÎÅÍ Áõ°¡ À̵¿ÇÏ¸ç ºÎºÐ ¹®ÀÚ¿­ subµµ °°ÀÌ À̵¿ÇÑ´Ù. À̵¿Áß¿¡ µÑ Áß Çϳª¶óµµ NULLÀ̰ųª ¾Æ´Ï¸é µÎ ¹®ÀÚ¿­ÀÇ ´ëÀÀµÇ´Â ¹®ÀÚ°¡ ´Ù¸£¸é ·çÇÁ¸¦ Á¾·áÇÑ´Ù.

·çÇÁ Á¾·á Á÷ÈÄ¿¡ *sub¸¦ Á¡°ËÇÏ¿© ºÎºÐ ¹®ÀÚ¿­ÀÇ ³¡±îÁö Å×½ºÆ®¸¦ ¹«»çÈ÷ Åë°úÇß´Ù¸é Àüü ¹®ÀÚ¿­ÀÇ ÇöÀç À§Ä¡¿¡¼­ ºÎºÐ ¹®ÀÚ¿­ÀÌ ¹ß°ßµÈ °ÍÀÌ´Ù. ±×·¸Áö ¾Ê´Ù¸é Àüü ¹®ÀÚ¿­ÀÇ ´ÙÀ½ À§Ä¡·Î À̵¿ÇÏ¿© °è¼Ó ºÎºÐ ¹®ÀÚ¿­À» °Ë»öÇÑ´Ù. Àüü ¹®ÀÚ¿­ÀÇ ³¡(*stringÀÌ NULL)±îÁö °Ë»öÇصµ ºÎºÐ ¹®ÀÚ¿­ÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é À̶§´Â NULLÀ» ¸®ÅÏÇÑ´Ù.

ÀÌ ¿¹Á¦ÀÇ my_strstrÀº ·çÇÁ°¡ Á¶±Ý º¹ÀâÇØ º¸À̱â´Â ÇÏÁö¸¸ ±×·¡µµ ÀÌÇØÇÏÁö ¸øÇÒ Á¤µµ·Î ¾î·ÆÁö´Â ¾Ê´Ù. ±¸Á¶°¡ °£´ÜÇϱ⠶§¹®¿¡ °Ë»ö ¼Óµµ´Â ±×¸® ÁÁÁö ¾ÊÀ» °ÍÀÌ´Ù. ½ÇÁ¦ Ç¥ÁØ ÇÔ¼ö strstrÀº ÀÌ·± ÀÌÁß ·çÇÁ°°Àº °£´ÜÇÑ ¹æ¹ýÀ» ¾²Áö ¾Ê°í Á» ´õ º¹ÀâÇÏ°í ¼º´ÉÀÌ ÁÁÀº ¾Ë°í¸®ÁòÀ» »ç¿ëÇϴµ¥ ´ÙÀ½¿¡ ±âȸ°¡ µÇ¸é ¾Ë°í¸®Áò¿¡µµ °ü½ÉÀ» °¡Á® º¸±â ¹Ù¶õ´Ù.

 

ÀÌ»óÀ¸·Î Ç¥ÁØ ÇÔ¼ö ¸î °¡Áö¸¦ Èä³»³»¼­ ¶È°°ÀÌ(¶Ç´Â ÃÖ¼ÒÇÑ ºñ½ÁÇÏ°Ô¶óµµ) µ¿ÀÛÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇØ º¸¾Ò´Ù. ¿©±â¼­ ½Ç½ÀÇØ º¸Áö ¾ÊÀº ¹®ÀÚ¿­ °ü·Ã ÇÔ¼öµéµµ ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î ´ëºÎºÐ Á÷Á¢ ¸¸µé ¼ö ÀÖÀ» °ÍÀÌ´Ù. Ç¥ÁØ ÇÔ¼öµéÀ̶õ »ç½Ç ¸¸µé±â ¾î·Á¿ö¼­ Á¦°øµÇ´Â °ÍÀ̶ó±âº¸´Ù´Â ´©°¡ ¸¸µé¾îµµ ¶È°°±â ¶§¹®¿¡ ¹Ì¸® ÀÛ¼ºµÇ¾î ÀÖ´Â °ÍÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª putch°°Àº ÇÔ¼ö´Â °£´ÜÇØ º¸¿©µµ Á÷Á¢ ¸¸µé±â ¾î·Á¿îµ¥ ¿Ö³ÄÇϸé ÀÌ ÇÔ¼ö´Â ¿î¿µÃ¼Á¦¿Í Á÷Á¢ Åë½ÅÇÏ´Â ¿øÀÚÀûÀÎ ÇÔ¼öÀ̱⠶§¹®ÀÌ´Ù. printf µµ ³»ºÎ°¡ Á» º¹ÀâÇϱâ´Â ÇÏ°ÚÁö¸¸ ±»ÀÌ Á÷Á¢ ¸¸µé¾î ¾µ·Á¸é ¸øÇÒ °Íµµ ¾ø´Ù. ¹°·Ð Ç¥ÁØ ÇÔ¼ö°¡ Àִµ¥ Á÷Á¢ ¸¸µé ÀÌÀ¯´Â ¾øÁö¸¸ ¸»ÀÌ´Ù.

 

 my_strcmp

µÎ ¹®ÀÚ¿­ÀÇ »óµî ¹× ´ë¼Ò °ü°è¸¦ ºñ±³ÇÏ´Â strcmp ÇÔ¼ö¿Í µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÏ´Â my_strcmp ÇÔ¼ö¸¦ ÀÛ¼ºÇÏ°í Å×½ºÆ®Ç϶ó. ºñ±³ ´ë»ó ¹®ÀÚ¿­ÀÇ ±æÀÌ°¡ ´Ù¸¦ ¼öµµ ÀÖ´Ù´Â Á¡À» ÁÖÀÇÇØ¾ß ÇÑ´Ù. ¶ÇÇÑ ´ë¼Ò¹®ÀÚ ±¸ºÐ¾øÀÌ ¹®ÀÚ¿­À» ºñ±³ÇÏ´Â my_stricmp ÇÔ¼öµµ ÀÛ¼ºÇØ º¸¾Æ¶ó.

 my_strncpy

¹®ÀÚ¿­ÀÇ ÀϺθ¸ º¹»çÇÏ´Â my_strncpy ÇÔ¼ö¸¦ ÀÛ¼ºÇÏ°í Å×½ºÆ®Ç϶ó. ¶ÇÇÑ ¹®ÀÚ¿­ÀÇ ÀϺθ¸ ¿¬°áÇÏ´Â my_strncat ÇÔ¼öµµ ÀÛ¼ºÇØ º¸¾Æ¶ó. Ç¥ÁØ ÇÔ¼öÀÇ µ¿ÀÛÀ» ¸ÕÀú Àß °üÂûÇÏ°í °¡±ÞÀûÀÌ¸é ¶È°°ÀÌ µ¿ÀÛÇϵµ·Ï ÀÛ¼ºÇÏ´Â °ÍÀÌ Áß¿äÇÏ´Ù.