12-2.¼öÄ¡¿Í ¹®ÀÚ¿­

12-2-°¡.Á¤¼ö¿Í ¹®ÀÚ¿­

¼öÄ¡¿Í ¹®ÀÚ¿­Àº µ¥ÀÌÅÍ Å¸ÀÔÀÌ ´Ù¸£¸ç µû¶ó¼­ ¸Þ¸ð¸®¿¡ ±â¾ïµÇ´Â ¸ð¾çµµ »ó´çÈ÷ ´Ù¸£´Ù. ´ÙÀ½ µÎ º¯¼ö¸¦ º¸ÀÚ.

 

int num=123;

char str[]="123";

 

µÎ º¯¼ö ¸ðµÎ 123À¸·Î ÃʱâÈ­µÇ¾ú´Âµ¥ Á¤¼öÇü º¯¼ö numÀº ¼öÄ¡°ª 123À» °¡Áö°í ÀÖ°í ¹®ÀÚ ¹è¿­ strÀº ¹®ÀÚ¿­ "123"À» °¡Áö°í ÀÖ´Ù. ÀÌ µÎ °ªÀº ¿ÜÇüÀûÀÎ ¸ð¾çÀÌ ºñ½ÁÇØ º¸ÀÌÁö¸¸ ³»ºÎÀûÀ¸·Î´Â ¿ÏÀüÈ÷ ´Ù¸¥ °ªÀÌ´Ù. numÀÇ °ª 123Àº ¹éÀ̽ʻïÀ̶ó´Â ¼öÄ¡À̸ç ÀÌ °ªÀº 122º¸´Ù Çϳª ´õ ¸¹°í 124º¸´Ù´Â Çϳª ´õ ÀÛ´Ù´Â ¼ºÁúÀ» °¡Áö°í ÀÖ´Ù. ¹Ý¸é ¹®ÀÚ¿­ strÀÇ °ª "123"Àº ¹®ÀÚ '1'°ú ¹®ÀÚ '2'¿Í ¹®ÀÚ '3'ÀÌ ¿¬¼ÓÀûÀ¸·Î ¹èÄ¡µÇ¾î ÀÖ´Ù »ÓÀÌÁö »ê¼úÀûÀÎ Àǹ̸¦ °¡ÁöÁö ¾Ê´Â´Ù.

¹®ÀÚ¿­°ú ¼öÄ¡´Â ³»ºÎÀûÀÎ ¸ð¾çÀÌ ¿ÏÀüÈ÷ ´Ù¸£±â ¶§¹®¿¡ »óÈ£ ´ëÀÔÇϰųª ¿¬»êÇÒ ¼ö ¾ø´Ù. ¿¹¸¦ µé¾î str=123À̶ó°í ´ëÀÔÇѴٰųª a=num+str°ú °°ÀÌ µ¡¼ÀÀ» ÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù. ¶ÇÇÑ °¢°¢Àº ŸÀÔÀÌ ¸Â´Â À§Ä¡¿¡¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. numÀÌ 123ÀÇ °ªÀ» °¡Áø´Ù°í Çؼ­ puts(num)À» È£ÃâÇϸé 123ÀÌ Ãâ·ÂµÇ´Â °ÍÀÌ ¾Æ´Ï¸ç strÀÌ "123"ÀÏ ¶§ delay(str)À̶ó°í È£ÃâÇÑ´Ù°í Çؼ­ 0.123ÃÊ µ¿¾È ½ÇÇàÀÌ ÁßÁöµÇ´Â °Íµµ ¾Æ´Ï´Ù.

ÄÜ¼Ö È¯°æ¿¡¼­´Â ÀÌ·± µÎ Çü½ÄÀÇ Â÷ÀÌÁ¡À» ¾î´À Á¤µµ ¿ÏÃæÇØÁÖ´Â ÀåÄ¡°¡ ÀÖ´Ù. È­¸éÀ¸·Î Á÷Á¢ Ãâ·Â °¡´ÉÇÑ Çü½ÄÀº ¹®ÀÚ¿­»ÓÀε¥ printf ÇÔ¼ö´Â %d, %f ¼­½Ä¿¡ ÀÇÇØ Á¤¼ö³ª ½Ç¼ö¸¦ ¹®ÀÚ¿­·Î ¹Ù²Ù¾î Ãâ·ÂÇÑ´Ù. Å°º¸µå´Â ¿øÄ¢ÀûÀ¸·Î ¹®ÀÚ¿­À» ÀÔ·ÂÇÏ´Â ÀåºñÀÌÁö¸¸ ÀÔ·ÂµÈ ¹®ÀÚ¿­ÀÌ scanf ÇÔ¼ö¿¡ ÀÇÇØ ¼öÄ¡°ªÀ¸·Î ¹Ù²î¾î º¯¼ö¿¡ ´ëÀԵȴÙ.

±×·¯³ª ±×·¡ÇÈ È¯°æ(GUI)¿¡¼­´Â ÀÌ·± ÀåÄ¡°¡ Á¦°øµÇÁö ¾Ê´Â´Ù. À©µµ¿ìÁîÀÇ Ç¥ÁØ Ãâ·Â ÇÔ¼öÀÎ TextOutÀº ¿À·ÎÁö ¹®ÀÚ¿­¸¸ Ãâ·ÂÇÒ ¼ö ÀÖ°í ¿¡µðÆ® ÄÁÆ®·ÑÀÌ ÀԷ¹޴ °ªµµ ¿øÄ¢ÀûÀ¸·Î ¹®ÀÚ¿­»ÓÀÌ´Ù. ÀÌ·± °æ¿ì¿¡´Â ¼öÄ¡¿Í ¹®ÀÚ¿­À» ¿øÇÏ´Â ÇüÅ·ΠÁ÷Á¢ ¹Ù²Û ÈÄ »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ Àý¿¡¼­´Â ¼öÄ¡, ±×·¯´Ï±î Á¤¼ö¿Í ½Ç¼ö¸¦ ¹®ÀÚ¿­·Î »óÈ£ º¯È¯ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æº¼ °ÍÀÌ´Ù.

´ÙÀ½ ÇÔ¼öµéÀº Á¤¼ö¸¦ ¹®ÀÚ¿­·Î º¯È¯ÇÑ´Ù. Á¤¼öÀÇ Å¸ÀÔ¿¡ µû¶ó ¼¼ °³ÀÇ ÇÔ¼ö°¡ ÁغñµÇ¾î Àִµ¥ 32ºñÆ® ȯ°æ¿¡¼­´Â longÇüÀÌ int¿Í °°±â ¶§¹®¿¡ ltoa ÇÔ¼ö´Â itoa ÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù. ÁÖ·Î itoa ÇÔ¼ö¸¦ ¸¹ÀÌ »ç¿ëÇÏ¸ç ºÎÈ£¾ø´Â Á¤¼öÀÏ °æ¿ì¿¡¸¸ ultoa ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

 

char *itoa(int value, char *string, int radix);

char *ltoa(long value, char *string, int radix);

char *ultoa(unsigned long value, char *string, int radix);

 

itoa ÇÔ¼ö´Â Integer to AsciiÀÇ Áظ»ÀÌ¸ç ¸» ¶æ ±×´ë·Î Á¤¼ö¸¦ ¹®ÀÚ¿­·Î º¯È¯ÇÑ´Ù. ù ¹ø° Àμö¿¡ ¹Ù²Ù°íÀÚ ÇÏ´Â Á¤¼ö°ªÀ» ÁÖ°í µÎ ¹ø° Àμö¿¡ º¯È¯ÇÑ ¹®ÀÚ¿­À» ÀúÀåÇÒ ¹è¿­À» ÁØ´Ù. ¼¼ ¹ø° Àμö radix´Â º¯È¯½Ã »ç¿ëÇÒ Áø¹ýÀ» ÁöÁ¤Çϴµ¥ 10Áø¹ýÀ¸·Î º¯È¯ÇÒ °æ¿ì 10À̶ó°í ¾²¸é µÈ´Ù.

 

int num=123;

char str[10];

itoa(num,str,10);

 

ÀÌ Äڵ忡 ÀÇÇØ str¿¡ "123"ÀÌ º¹»çµÉ °ÍÀÌ´Ù. num¿¡ ÀúÀåµÈ ¼öÄ¡°ªÀÌ ¹®ÀÚ¿­ ÇüÅ·Π¹Ù²î¾î str ¹è¿­¿¡ ÀúÀåµÇ¾úÀ¸¹Ç·Î puts(str)·Î ÀÌ ¹®ÀÚ¿­À» Ãâ·ÂÇϸé numÀÇ °ªÀÌ È­¸é¿¡ Ãâ·ÂµÈ´Ù. itoa ÇÔ¼öµµ ¹è¿­ ³¡ Á¡°ËÀ» ÇÏÁö ¾ÊÀ¸¹Ç·Î µÎ ¹ø° Àμö(À§ Äڵ忡¼­ str)·Î ÃæºÐÇÑ ±æÀÌÀÇ ¹è¿­À» Á¦°øÇØ¾ß ÇÑ´Ù. itoa ÇÔ¼öÀÇ ¼¼ ¹ø° Àμö radix´Â º¸Åë 10À¸·Î Áִµ¥ Áø¹ýÀ» ¹Ù²Ù°í ½ÍÀ» ¶§´Â ¿øÇÏ´Â Áø¹ýÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â 12345¶ó´Â 10Áø¼ö¸¦ 2Áø¹ý~20Áø¹ý±îÁö ¹Ù²ã°¡¸ç Ãâ·ÂÇØ º» °ÍÀÌ´Ù.

 

¿¹ Á¦ : itoa

#include <Turboc.h>

 

void main(void)

{

     int num=12345;

     int radix;

     char str[32];

 

     for (radix=2;radix<=20;radix++) {

          itoa(num,str,radix);

          printf("%dÁø¹ý : %s\n",radix,str);

     }

}

 

radix¸¦ Á¦¾î º¯¼ö·Î ÇÏ¿© 2~20±îÁö ·çÇÁ¸¦ µ¹¸é¼­ itoa¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇß´Ù. Ãâ·Â °á°ú´Â ´ÙÀ½°ú °°´Ù.

 

2Áø¹ý : 11000000111001

3Áø¹ý : 121221020

4Áø¹ý : 3000321

5Áø¹ý : 343340

6Áø¹ý : 133053

7Áø¹ý : 50664

8Áø¹ý : 30071

9Áø¹ý : 17836

10Áø¹ý : 12345

11Áø¹ý : 9303

12Áø¹ý : 7189

13Áø¹ý : 5808

14Áø¹ý : 46db

15Áø¹ý : 39d0

16Áø¹ý : 3039

17Áø¹ý : 28c3

18Áø¹ý : 221f

19Áø¹ý : 1f3e

20Áø¹ý : 1ah5

 

¶È°°Àº ¼öÄ¡°ª 12345¶óµµ Áø¹ý¿¡ µû¶ó ÀÌ·¸°Ô ´Ù¾çÇÑ ÇüÅ·ΠǥÇöÇÒ ¼ö ÀÖ´Ù. ´Ü, °¢ Áø¹ý¿¡ µû¸¥ Ãâ·Â °á°ú´Â Ç¥Çö ¹æ¹ýÀÌ ´Ù¸¦ »ÓÀÌÁö ¸ðµÎ 10Áø¼ö·Î 12345¶ó´Â °ªÀ» ³ªÅ¸³½´Ù. radix ÀμöÀÇ °¡´ÉÇÑ °ªÀº 2~36±îÁöÀÌ´Ù. ³í¸®ÀûÀ¸·Î 1Áø¹ýÀ̶ó´Â °ÍÀº Á¸ÀçÇÒ ¼ö ¾øÀ¸¹Ç·Î ÃÖ¼Ò Áø¹ýÀº 2Áø¹ýºÎÅÍÀÌ¸ç ¼ýÀÚ Ç¥Çö¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹®ÀÚ°¡ 0~9, a~z±îÁö ÃÑ 36°³»ÓÀ̹ǷΠ36Áø¹ý±îÁö¸¸ Áö¿øÇÑ´Ù.

´ÙÀ½Àº ¹®ÀÚ¿­À» Á¤¼ö·Î ¹Ù²Ù´Â ÇÔ¼ö¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ŸÀÔ¿¡ µû¶ó ¸¹Àº ÇÔ¼öµéÀÌ ÁغñµÇ¾î Àִµ¥ ÀÌ Áß atoi ÇÔ¼ö°¡ ±âº» ÇÔ¼öÀÌ´Ù. atoi´Â ¹°·Ð Ascii to IntegerÀÇ ¾àÀÚÀÌ´Ù.

 

int atoi(const char *string);

long atol(const char *string);

long strtol(const char *nptr, char **endptr, int base);

unsigned long strtoul(const char *nptr, char **endptr, int base);

 

¹®ÀÚ¿­ str¿¡ "123"ÀÌ ÀúÀåµÇ¾î ÀÖÀ» ¶§ atoi(str)Àº ¼öÄ¡°ª 123À» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ÀÌ¹Ì ¾Õ Àå¿¡¼­ main ÇÔ¼öÀÇ Àμö·Î Àü´ÞµÈ ¹®ÀÚ¿­À» Á¤¼ö·Î ¹Ù²Ù±â À§ÇØ »ç¿ëÇØ º» ÀûÀÌ ÀÖ´Ù. ¸í·ÉÇà¿¡¼­ ÀԷµǴ ÇÁ·Î±×·¥ÀÇ Àμö argv´Â ¹®ÀÚ¿­ ¹è¿­À̱⠶§¹®¿¡ Á¤¼ö¸¦ ¹Ù·Î ÀԷ¹ÞÀ» ¼ö´Â ¾ø´Ù. ±×·¡¼­ Á¤¼ö ÇüÅ·ΠÀÔ·ÂµÈ ¹®ÀÚ¿­À» atoi ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© Á¤¼ö·Î ¹Ù²ã¼­ »ç¿ëÇØ¾ß ÇÑ´Ù.

atoi ÇÔ¼öÀÇ Àμö·Î Àü´ÞµÇ´Â ¹®ÀÚ¿­Àº ¼öÄ¡°ªÀÇ ÇüÅ·ΠÀúÀåµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ¼öÄ¡°ª Ç¥Çö¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹®ÀÚ´Â 0~9±îÁöÀÇ ¾Æ¶óºñ¾Æ ¼ýÀÚ¿Í +,- ºÎÈ£ Á¤µµÀÌ´Ù. ±×·¯¹Ç·Î atoi("123"), atoi("-78") ÀÌ·± ½ÄÀÇ ¹®ÀÚ¿­À» Àü´ÞÇØ¾ß Á¦´ë·Î º¯È¯µÈ´Ù. atoi("aaa")ó·³ ¼öÄ¡°¡ ¾Æ´Ñ ¹®ÀÚ¿­À» Àü´ÞÇÒ °æ¿ì atoi´Â º¯È¯ÇÒ ¼ö ¾ø´Ù´Â Àǹ̷Π0À» ¸®ÅÏÇÑ´Ù.

¸¸¾à ¼öÄ¡¿Í ¹®ÀÚ¿­ÀÌ ¼¯¿© ÀÖ´Ù¸é atoi´Â ¿¡·¯¸¦ ¸®ÅÏÇÏ´Â ´ë½Å º¯È¯ °¡´ÉÇÑ ºÎºÐ±îÁö¸¸ º¯È¯ÇÑ´Ù. ¿¹¸¦ µé¾î atoi("12month")¸¦ È£ÃâÇϸé 12°¡ ¸®ÅϵȴÙ. "12month"´Â ºñ·Ï ¿ÏÀüÇÑ ¼öÄ¡°ª ÇüÅÂÀÇ ¹®ÀÚ¿­Àº ¾Æ´ÏÁö¸¸ ÃÖ´ëÇÑ Çؼ® °¡´ÉÇÑ ºÎºÐ±îÁö´Â º¯È¯ÇØ ÁÖ´Â °ÍÀÌ´Ù. µû¶ó¼­ ¼ýÀÚ¿Í ¹®ÀÚ°¡ ¼¯ÀÎ ¹®ÀÚ¿­ÀÇ °æ¿ì º°µµÀÇ Ã³¸®¾øÀÌ ºÎºÐÀûÀÎ º¯È¯ÀÌ °¡´ÉÇÏ´Ù´Â Æí¸®ÇÔÀÌ ÀÖÁö¸¸ Á¤È®ÇÑ º¯È¯ÀÌ ¾Æ´Ï¶ó´Â Á¡¿¡¼­´Â ÁÖÀǸ¦ ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

atol ÇÔ¼ö´Â ¹®ÀÚ¿­¿¡ ÀúÀåµÈ ¼öÄ¡¸¦ long ÇüÀ¸·Î º¯È¯Çϴµ¥ 32ºñÆ® ȯ°æ¿¡¼­´Â int¿Í longÀÌ °°Àº ŸÀÔÀ̹ǷΠatoi¿Í ¿ÏÀüÈ÷ °°Àº µ¿ÀÛÀ» ÇÑ´Ù. strtol ÇÔ¼ö´Â atoi ÇÔ¼ö¿¡ ºñÇØ Áø¹ýÀ» ÀνÄÇÑ´Ù´Â Á¡¿¡ À־ Á¶±Ý ´õ ±â´ÉÀÌ ¸¹´Ù. atoi´Â ¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â °ªÀ» 10Áø¼ö·Î¸¸ ÀνÄÇÏÁö¸¸ strtol ÇÔ¼ö´Â ¼¼ ¹ø° Àμö base·Î ¹®ÀÚ¿­¿¡ µé¾î ÀÖ´Â °ªÀÇ Áø¹ýÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

¸¸¾à base°¡ 10À̶ó¸é strtolÀº string Àμö¸¦ 10Áø¹ýÀÇ °ªÀ¸·Î ÀνÄÇϹǷΠÀÌ °æ¿ì´Â atoi ÇÔ¼ö¿Í °°Àº µ¿ÀÛÀ» ÇÑ´Ù. base°¡ 16À̶ó¸é stringÀº 16Áø¼öÀ̹ǷΠ0~9±îÁöÀÇ ¹®ÀÚ ¿Ü¿¡ a~f±îÁöÀÇ ¹®ÀÚµµ ¼ýÀÚ·Î ÀÎÁ¤µÉ °ÍÀÌ´Ù. "10011100"°ú °°ÀÌ ÀÌÁø¼ö ÇüÅ·ΠÀúÀåµÈ ¹®ÀÚ¿­µµ strtol ÇÔ¼ö¸¦ »ç¿ëÇϸé Á¤¼ö·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù.

ÁöÁ¤ÇÑ base¿¡ »ç¿ëÇÒ ¼ö ¾ø´Â ¹®ÀÚ°¡ ¹ß°ßµÉ °æ¿ì ±× À§Ä¡¿¡¼­ º¯È¯À» ÁßÁöÇÑ´Ù. ¿¹¸¦ µé¾î base°¡ 8À̸é 0~7±îÁöÀÇ ¼ýÀÚ¸¸ »ç¿ëÇÒ ¼ö Àִµ¥ ¹®ÀÚ¿­¿¡ "2390"ÀÌ ÀúÀåµÇ¾î ÀÖ´Ù¸é "23"±îÁö¸¸ º¯È¯µÉ °ÍÀÌ´Ù. À̶§ º¯È¯ÀÌ ÁßÁöµÈ ÁöÁ¡ÀÇ ¹øÁö°¡ µÎ ¹ø° Àμö endptr¿¡ ´ëÀԵǹǷΠ¾îµð¼­ ÁßÁöµÇ¾ú´ÂÁö¸¦ Á¶»çÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ¿¡·¯ °ËÃâ ±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é strtolÀÇ µÎ ¹ø° Àμö·Î NULLÀ» ÁöÁ¤ÇÏ¸é µÈ´Ù. ´ÙÀ½ ¿¹Á¦´Â 16Áø¼ö abcd¸¦ Á¤¼ö·Î º¯È¯ÇÑ ÈÄ ±× °ªÀ» printf·Î Ãâ·ÂÇØ º¸¾Ò´Ù.

 

¿¹ Á¦ : strtol

#include <Turboc.h>

 

void main(void)

{

     char *endptr;

     char str[]="abcd";

 

     long l=strtol(str,&endptr,16);

     printf("%ld\n",l);

}

 

16Áø¼ö abcd´Â 10Áø¼ö·Î 43981À̹ǷΠ43981ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù. printfÀÇ Ãâ·Â ¼­½ÄÀ» %d ´ë½Å %x¸¦ »ç¿ëÇϸé abcd°¡ ±×´ë·Î Ãâ·ÂµÈ´Ù. strtolÀÌ Á¤¼ö·Î ¹Ù²Û °ªÀ» printfÀÇ %x ¼­½ÄÀÌ ´Ù½Ã 16Áø¼ö ÇüÅÂÀÇ ¹®ÀÚ¿­·Î ¹Ù²Ù¾î Ãâ·ÂÇϱ⠶§¹®ÀÌ´Ù.