Ç¥ÁØ ÇÔ¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é¼ ¹®ÀÚ¿ ½ºÆ®¸µÀ»
Á¶ÇÕÇؾßÇÏ´Â °æ¿ì°¡ »ý°Ü¼ ¸¸µé¾î º¸¾Ò´Ù. ÀϹÝÀûÀ¸·Î
sprintf()¸¦ ÅëÇØ ÇÒ ¼ö ÀÖ´Â °ÍÀÌÁö¸¸ ÀλýÀ» »ì´Ùº¸´Ï
C Ç¥ÁØ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÏÁö ¾Ê¾Æ¾ß ÇÒ ¶§µµ »ý°å´Ù.
±×·¸´Ù°í vprintf()¸¸ÅÀÇ ¾Æ¸§´Ù¿î ±â´ÉÀ» ¿ä±¸ÇÏ´Â
°Íµµ ¾Æ´Ï°í ´Ü¼øÈ÷ ½ºÆ®¸µ¿¡ ÇÊ¿äÇÑ ¼ýÀÚµéÀ» Á¶ÇÕÇϱâ
À§Çؼ ÇÊ¿äÇß´ø °ÍÀ̶ó ÃÖ¼ÒÇÑÀÇ ±â´ÉÀ¸·Î ¸¸µé¾î
º¸¾Ò´Ù.
ÀüüÀûÀ¸·Î sprintf()¿Í À¯»çÇÏÁö¸¸ format ½ºÆ®¸µ¿¡¼
'@'·Î Ç¥½ÃµÈ °ÍÀ» ÆĶó¹ÌÅÍ·Î µé¾î¿Â ¼ýÀڷΠġȯÇÏ´Â
°ÍÀÌ ´Ù¸¥ Á¡ÀÌ´Ù. ¿¹¸¦ µé¾î, "value = @, @"ÀÌ°í
ÆĶó¹ÌÅÍ°¡ 100, 200À̶ó¸é "value = 100, 200"À̶ó´Â
¹®ÀÚ¿À» ¸¸µé¾î µ¹·Á ÁÖ´Â °ÍÀÌ´Ù.
ÇÔ¼öÀÇ ¼±¾ðÀº ´ÙÀ½°ú °°´Ù.
void ComposeString(char pBuffer[], const char* szFormat, const int data...)
szFormat¿¡ ¹®ÀÚ¿À» º¸³»ÁÖ°í µÚÀÇ data¿¡´Â ±×¿¡
¸Â´Â Á¤¼öÇü ÆĶó¹ÌÅ͸¦ °¡º¯ÀûÀÎ °³¼ö·Î º¸³»ÁØ´Ù.
±×·¯¸é ±×°ÍÀ» ó¸®ÇÏ¿© pBuffer¿¡ µ¹·ÁÁÖ´Â ÇÔ¼öÀÌ´Ù.
»ç¿ë ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù.
01: int main() 02: {
03: char buffer[256]; 04:
05: ComposeString(buffer, "1 = @, 12 = @, -123 = @", 1, 12, -123);
06: 07: puts(buffer); 08:
09: return 0; 10: }
´ÙÀ½Àº À§ÀÇ Äڵ带 ½ÇÇàÇßÀ» ¶§ÀÇ Ãâ·Â °á°úÀÌ´Ù.
> 1 = 1, 12 = 12,
-123 = -123
´ÙÀ½Àº À§ÀÇ ÇÔ¼ö¸¦ ±¸ÇöÇϱâ À§ÇÑ ÄÚµåÀÌ´Ù.
01: static void s_Int2Str(char **ppBuffer, int value) 02: { 03: if (value == 0) 04: { 05: *((*ppBuffer)++) = '0'; 06: } 07: else 08: { 09: if (value < 0)
10: { 11: *((*ppBuffer)++) = '-'; 12: value = -value; 13: } 14: 15: int nNum = 0; 16: int temp = value; 17: while (temp) 18: { 19: temp = temp / 10; 20: ++nNum; 21: } 22: 23: int nLoop = nNum; 24: while (nLoop-- > 0) 25: { 26: (*ppBuffer)[nLoop] = (value % 10) + '0'; 27: value = value / 10; 28: } 29: *ppBuffer += nNum; 30: } 31: } 32:
33: static void ComposeString(char pBuffer[], 34: const char* szFormat, const int data...) 35: { 36: if (pBuffer == 0)
37: return; 38:
39: const int* pData = &data; 40: 41: while (*szFormat) 42: { 43: if (*szFormat != '@') 44: { 45: *pBuffer++ = *szFormat++; 46: continue; 47: } 48: ++szFormat; 49: s_Int2Str(&pBuffer, *pData++); 50: } 51: 52: *pBuffer = 0; 53: }
|