°£´ÜÇÑ ÇÔ¼ö Çϳª¸¦ »ç¿ëÇÏ°í Àִµ¥, ÀÌ ÇÔ¼ö »ç¿ëÇÒ ¶§ µµÀúÈ÷ ÀÌÇØ°¡ ¾ÈµÇ¾î Áú¹®µå¸³´Ï´Ù..
int hangle_cpy (char *buf, char *src, int len)
{
register int ii;
int hf;
for(ii = 0, hf = 0; ii < len; ii++)
{
if(src[ii] & 0x80)
hf ^= 1;
buf[ii] = src[ii];
}
if (hf)
{
buf[ii - 1] = ' ';
return(len - 1);
}
return(len);
}
¸¸¾à 100¹ÙÀÌƮ¥¸® char ¹è¿(char *buf)¿¡ 1000¹ÙÀÌƮ¥¸® char ¹è¿(char *src)À» Ä«ÇÇÇØ ³Ö¾î¾ß ÇÏ´Â »óȲÀ϶§
Çѱ۰ú ¿µ¹® µîÀÌ ¼¯¿©ÀÖ´Â ¹®ÀÚ¿¿¡ ¸¶Áö¸· byte °¡ ÇÑ±Û 2byte Áß Çϳª°¡ °É·Á¼ ©¸®´Â Çö»óÀ϶§¸¦ À§ÇÑ ÄÚµå·Î ¾Ë°íÀÖ½À´Ï´Ù.
±×·±µ¥ ¼Ò½º¿¡¼ Á» ÀÌÇØ°¡ ¾ÈµÇ´Â ºÎºÐÀÌ,
1. if(src[ii] & 0x80) °¡ TRUE¸é hf ¿¡ XOR ¸¦ Çؼ, ÇÏ´Ü Á¶°Ç¹®¿¡ buf[ii - 1] ¿¡ °ø¹éÀ» ä¿öµÎ´Â ºÎºÐÀε¥
¿©±â °ø¹éÀ» ä¿öµÎ´Â ÀÌÀ¯°¡ ¹»±î¿ä?
½ÇÁ¦ ÇÔ¼ö »ç¿ëÇÏ´Â ¼Ò½º¿¡¼´Â ¸®ÅϹÞÀº len À» »ç¿ëÇÏÁö´Â ¾Ê½À´Ï´Ù..
2. ÇÔ¼ö È£ÃâºÎ¿¡¼´Â hangle_cpy(buf, src, sizeof(buf)-1) À¸·Î »ç¿ëÇϴµ¥, sizeof(buf) ¿¡ -1À» ½ÃÅ°´Â ÀÌÀ¯µµ ±Ã±ÝÇÕ´Ï´Ù.
1, 2¿¡ °üÇØ Áú¹®µå¸®°í ½Í½À´Ï´Ù~
±ä ±Û ÀоîÁּż °¨»çÇÕ´Ï´Ù! |
1. ÇѱÛÀÌ 2¹ÙÀÌÆ®¶ó´Â °¡Á¤ÇÏ¿¡ ¹®ÀÚ¿ Áß°£¿¡ ÇѱÛÀÌ ³ª¿À¸é
ù¹ø° ¹ÙÀÌÆ®¿¡¼ xor ·Î hf °¡ 1·Î ¹Ù²¼´Ù°¡ µÎ¹ø° ¹ÙÀÌÆ®¿¡¼ 0À¸·Î ¹Ù²î°Ú³×¿ä
if(hf) ¿¡¼ ¸¶Áö¸·¿¡ ÇѱÛÀÌ ±æÀÌ ¶§¹®¿¡ ÇѹÙÀÌÆ®¸¸ º¹»çµÇ¾ú´Ù¸é
±úÁø ¹®ÀÚ¸¦ °ø¹éÀ¸·Î ġȯÇÏ°í º¹»çµÈ¹®ÀÚ¿ ±æÀÌÀÎ len-1 À» ¸®ÅÏÇϴ°Š°°³×¿ä
2. C/C++ ¿¡¼ ¹®ÀÚ¿ ¸¶Áö¸·¿¡ \0 ÀÌ ÀÖ¾î¾ß Çؼ (null terminated string) Àüü ¹öÆÛ Å©±â - 1 ¸¸Å¸¸ º¹»çÇÏ·Á°í Çϴ°Š°°¾Æ¿ä