¹è¿Àº C¾ð¾î°¡ Á¦°øÇÏ´Â °¡Àå ±âº»ÀûÀÎ ÀÚ·á ±¸Á¶ÀÌ¸ç ¿ö³« ´Ü¼øÇϱ⠶§¹®¿¡ ´©±¸³ª ½±°Ô Àͼ÷ÇØÁú ¼ö ÀÖ´Ù. ¹è¿ÀÇ ÀåÁ¡Àº Å©°Ô µÎ °¡Áö°¡ Àִµ¥ ù °·Î ±¸Á¶°¡ ´Ü¼øÇϱ⠶§¹®¿¡ Á¤º¸ ÀÚü¸¦ ±â¾ïÇÏ´Â ¸Þ¸ð¸® ¿Ü¿¡ Ãß°¡·Î ¼Ò¸ðÇÏ´Â ¸Þ¸ð¸®°¡ ÀüÇô ¾ø¾î °ø°£ È¿À²ÀÌ ÁÁ´Ù. Á¤¼öÇü º¯¼ö 100°³¸¦ ÀúÀåÇÏ´Â int ar[100] ¹è¿Àº Á¤È®ÇÏ°Ô Á¤¼ö 100°³ºÐ¸¸ÅÀÇ ¸Þ¸ð¸®¸¸À» ¿ä±¸ÇÑ´Ù.
µÑ °·Î ¹è¿ Å©±â°¡ ¾Æ¹«¸® Ä¿Áö´õ¶óµµ °Ë»ö ¼Óµµ°¡ ÀÏÁ¤ÇÏ´Ù. ¹è¿ÀÇ Ã·ÀÚ ¿¬»êÀº Æ÷ÀÎÅ͸¦ ÅëÇØ ½ÃÀÛ ¹øÁö¿¡ ÷ÀÚ*¿ä¼ÒÅ©±â¸¦ ´õÇÏ´Â °£´ÜÇÑ µ¿ÀÛÀ̹ǷΠÀÓÀÇÀÇ ÇÑ ¿ä¼Ò¸¦ ÂüÁ¶ÇÏ´Â ½Ã°£ÀÌ »ó¼öÀÌ´Ù. int ar[10]¿¡¼ ar[9]¸¦ ÂüÁ¶ÇÏ´Â ½Ã°£°ú int ar[1000]¿¡¼ ar[999]¸¦ ÂüÁ¶ÇÏ´Â ½Ã°£ÀÌ ¶È°°´Ù´Â ¾ê±âÀÌ´Ù. ÀÌó·³ ¹è¿Àº ¸Þ¸ð¸® ¿ä±¸·®À̳ª ¼Óµµ¸é¿¡¼ ¸ðµÎ ¸¸Á·ÇÒ¸¸ÇÑ ¼º´ÉÀ» º¸À̴µ¥ ¿ä¾àÇÏÀÚ¸é ÀÛ°í ºü¸¥ ÀڷᱸÁ¶ÀÌ´Ù. °Ô´Ù°¡ ¾²±âµµ ½¬¿ö ´Ù¾çÇÑ ¿ëµµ¿¡ ¾ÆÁÖ ¿ä±äÇÏ°Ô »ç¿ëµÈ´Ù.
±×·¯³ª ÀÌ·± Æí¸®ÇÑ ¹è¿¿¡µµ ÇÑ °¡Áö ´ÜÁ¡ÀÌ Àִµ¥ ¹è¿ ¿ä¼Ò°¡ ¿¬¼ÓµÈ ¸Þ¸ð¸® °ø°£¿¡ ¹èÄ¡µÇ¾î ÀÖ¾î¾ß ÇϹǷΠÁß°£ÀÇ ¿ä¼Ò¸¦ »èÁ¦Çϰųª »õ·Î¿î ¿ä¼Ò¸¦ »ðÀÔÇÒ ¼ö ¾ø´Ù´Â Á¡ÀÌ´Ù. ¹è¿Àº ÀϹÝÀûÀ¸·Î »ðÀÔ, »èÁ¦°¡ ¾ÈµÇ´Â °ÍÀ¸·Î ¾Ë·ÁÁ® Àִµ¥ ÀÌ´Â ÀÏÁ¾ÀÇ °íÁ¤ °ü³äÀÌ´Ù. ¹æ¹ýÀ» ã¾Æ º¸¸é Á¶±Ý ºÒÆíÇϱâ´Â ÇÏÁö¸¸ ÀüÇô ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚÇü ¹è¿À» ´ë»óÀ¸·Î »ðÀÔ, »èÁ¦ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁØ´Ù.
|
¿¹ Á¦ : ArrayInsDel |
#include <Turboc.h>
char ar[16]="abcdef";
void Insert(int idx, char ch)
{
memmove(ar+idx+1,ar+idx,strlen(ar)-idx+1);
ar[idx]=ch;
}
void Delete(int idx)
{
memmove(ar+idx,ar+idx+1,strlen(ar)-idx);
}
void Append(char ch)
{
Insert(strlen(ar),ch);
}
void main()
{
printf("ÃÖÃÊ : %s\n",ar);
Insert(3,'t');printf("t»ðÀÔ : %s\n",ar);
Delete(1);printf("b»èÁ¦ : %s\n",ar);
Append('s');printf("sÃß°¡ : %s\n",ar);
}
¹®ÀÚÇü ¹è¿ ar¿¡ "abcdef"¶ó´Â ÀÏ·ÃÀÇ ¹®ÀÚµé(¹®ÀÚ¿)À» ÀúÀåÇØ ³õ°í ¹®ÀÚ Áß°£¿¡ ´Ù¸¥ ¹®ÀÚ¸¦ »ðÀÔÇϰųª »èÁ¦ÇÑ´Ù. ½ÇÇà °á°ú¸¦ º¸¸é ¹®ÀÚ Áß°£¿¡ ´Ù¸¥ ¹®ÀÚ°¡ ³¢¾îµé±âµµ ÇÏ°í »ç¶óÁö±âµµ ÇÑ´Ù.
ÃÖÃÊ : abcdef
t»ðÀÔ : abctdef
b»èÁ¦ : actdef
sÃß°¡ : actdefs
Insert ÇÔ¼ö´Â ¹è¿ÀÇ idx¹øÂ° ¿ä¼Ò¿¡ ch¹®ÀÚ¸¦ »ðÀÔÇϴµ¥ 12Àå¿¡¼ ¿¬±¸ÇØ º» ¹Ù ÀÖ´Â ¸Þ¸ð¸® À̵¿ ÇÔ¼öÀÎ memmove¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÔ¼ö·Î »ðÀ﵃ À§Ä¡ ÀÌÈÄÀÇ ¹®ÀÚµéÀ» ÇÑľ¿ µÚ·Î À̵¿½ÃÄÑ »õ ¿ä¼Ò°¡ »ðÀ﵃ °ø°£À» ¸¸µç´Ù. À̵¿À» ½ÃÀÛÇÒ À§Ä¡´Â ¹è¿ ¼±µÎ ar¿¡¼ºÎÅÍ idx µÚÂÊÀÎ ar+idxÀ̰í ÀÌ ¹øÁö ÀÌÈĺÎÅÍ ÇÑľ¿ µÚ·Î ¹Ð¾î¾ß ÇϹǷΠar+idx+1 ¹øÁö°¡ À̵¿ ¸ñÀûÁöÀÌ´Ù.
À̵¿ÇÒ ±æÀÌ´Â À̵¿ ½ÃÀÛ ¹øÁö µÚÂÊÀÇ ³²Àº ¿ä¼Ò °³¼öÀε¥ ÀÌ °³¼ö´Â Àüü ±æÀÌÀÎ strlen(ar)¿¡¼ À̵¿ ½ÃÀÛ ¿ä¼ÒÀÇ ¹øÈ£ÀÎ idx¸¦ »©¼ ±¸Ç쵂 ³Î Á¾·á ¹®ÀÚµµ Æ÷ÇÔ½ÃÄÑ¾ß ÇϹǷΠ1À» ´õÇØ ÁÖ¾ú´Ù. memmove ÇÔ¼ö´Â ¹ÙÀÌÆ® ´ÜÀ§ÀÇ À̵¿ ±æÀ̸¦ ¿ä±¸ÇϹǷΠÀ̵¿ÇÒ ¿ä¼Ò °³¼ö¿¡ ¿ä¼Ò ŸÀÔÀÇ Å©±âÀÎ sizeof(char)¸¦ °öÇØ¾ß Çϳª ÀÌ °æ¿ì´Â ¿ä¼Ò Å©±â°¡ 1À̹ǷΠ»ý·«ÇÒ ¼ö ÀÖ´Ù. Insert(3,'t') È£ÃâÀÇ µ¿ÀÛÀ» »ìÆìº¸¸é ´ÙÀ½°ú °°´Ù.

ar+3¹øÁö ÀÌÈÄÀÇ ³»¿ëÀ» ar+4¹øÁö·Î À̵¿Çϸç ÃÑ À̵¿ ±æÀÌ´Â ar+3 µÚÂÊ¿¡ ÀÖ´Â 3¹®ÀÚ¿¡ ³Î Á¾·á ¹®ÀÚ¸¦ ´õÇØ 4¹ÙÀÌÆ®¸¸ÅÀÌ´Ù. ar+3Àº ar+4·Î, ar+4´Â ar+5·Î ¹è¿ ³¡±îÁö ÇÑ Ä¾¿ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÏ´Â ¼ÀÀÌ´Ù. memmove È£ÃâÀÇ °á°ú·Î d°¡ ÀÖ´ø ÀÚ¸®°¡ ºñ¿öÁö´Âµ¥ ÀÌ ÀÚ¸®¿¡ »ðÀÔÇϰíÀÚ ÇÏ´Â ¹®ÀÚ¸¦ ´ëÀÔÇÏ¸é µÈ´Ù. ¹è¿ÀÇ Ã·ÀÚ ¿¬»êÀÌ ´Ü¼øÇÑ °ö¼À°ú µ¡¼À¸¸À¸·Î °¡´ÉÇϱâ À§Çؼ´Â ¹è¿À» ±¸¼ºÇÏ´Â ¿ä¼ÒµéÀÌ ¹°¸®ÀûÀ¸·Î ¿¬¼ÓÀûÀÎ ¸Þ¸ð¸® °ø°£¿¡ ÀúÀåµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù´Â ÀüÁ¦ Á¶°ÇÀÌ ¸¸Á·µÇ¾î¾ß ÇÑ´Ù.
memmove´Â »ðÀ﵃ À§Ä¡ ÀÌÈĸ¦ µÚ·Î º¹»çÇÔÀ¸·Î½á »ðÀÔ ÈÄ¿¡µµ ¹è¿ÀÌ ÀÌ Á¶°ÇÀ» ¸¸Á·Çϵµ·Ï ÇÑ´Ù. ¶ÇÇÑ memmove ÇÔ¼ö´Â À̵¿ ½ÃÀÛ ¹øÁö¿Í À̵¿ ¸ñÀûÁöÀÇ ¹øÁö°¡ °ãÃÄ ÀÖÀ» ¶§(overlap) À̵¿ ¹æÇâÀ» Á¶Á¤ÇÏ¿© º¹»çµÇ±â ÀüÀÇ ¿øº»ÀÌ ±úÁöÁö ¾Êµµ·Ï ÇÑ´Ù. À§ ¿¹¿¡¼ ar+3À» ar+4·Î º¹»çÇØ ¹ö¸®¸é ´ÙÀ½ À̵¿ ´ë»óÀÎ ar+4°¡ ÆÄ±«µÇ¾î ¹ö¸®¹Ç·Î ar+5ºÎÅÍ´Â °è¼Ó ar+3ÀÇ °ªÀ» °¡Áö°Ô µÉ °ÍÀÌ´Ù. ÀÌ·± °æ¿ì ¶È¶ÈÇÑ memmove´Â µÚÂÊ¿¡¼ºÎÅÍ º¹»ç¸¦ ÇÔÀ¸·Î½á º¹»çÀüÀÇ ¿øº»ÀÌ ÆÄ±«µÇÁö ¾Êµµ·Ï ÇÑ´Ù. ÇÔ¼ö ³»ºÎ¿¡¼ ¾Ë¾Æ¼ Á¤È®ÇÑ º¹»ç¸¦ Çϵµ·Ï µÇ¾î ÀÖÀ¸¹Ç·Î °³¹ßÀÚµéÀº ¾îµð¼ºÎÅÍ ¾îµð±îÁö ¾ó¸¶¸¸Å º¹»çÇ϶ó´Â ÃÖ¼ÒÇÑÀÇ ÀÇ»ç Ç¥½Ã¸¸ ÇÏ¸é µÈ´Ù.
Delete ÇÔ¼ö´Â idx¹øÂ° ¿ä¼Ò¸¦ »èÁ¦Çϴµ¥ Insert ÇÔ¼öº¸´Ù ÈξÀ ´õ ½±´Ù. »èÁ¦ÇÒ ¿ä¼ÒÀÇ µÚ¿¡ ÀÖ´Â ¸ðµç ¿ä¼Ò¸¦ ÇÑľ¿ ¾ÕÂÊÀ¸·Î À̵¿½Ã۱⸸ ÇÏ¸é µÈ´Ù. À̵¿ÇÒ ±æÀÌ´Â »èÁ¦ ´ë»ó ¿ä¼Ò ÀÌÈÄÀÇ ³²Àº ¿ä¼Ò °³¼ö¿¡ ³Î Á¾·á ¹®ÀÚºÐÀ» ´õÇÑ ±æÀ̸¸ÅÀÌ´Ù. ³²Àº ¿ä¼Ò °³¼ö´Â ÃÑ ±æÀÌÀÎ strlen(ar)¿¡¼ »èÁ¦ ´ë»ó ¿ä¼Ò ´ÙÀ½ ¹øÈ£ÀÎ idx+1À» »©°í ¿©±â¿¡ ³Î Á¾·á ¹®ÀÚºÐÀÎ 1À» ´õÇÏ¸é µÈ´Ù. strlen(ar)-(idx+1)+1·Î °è»êµÇ´Âµ¥ -1+1Àº »ó¼âµÇ¾î »ç¶óÁø´Ù.

b°¡ ÀÖ´ø ÀÚ¸®¿¡ c°¡ ¿À°í c°¡ ÀÖ´ø ÀÚ¸®¿¡ t°¡ ¿À´Â ½ÄÀ¸·Î ¸ðµç ¿ä¼Ò°¡ ÇÑľ¿ ¾ÕÂÊÀ¸·Î À̵¿Çϸç b´Â ¹Ù·Î µÚÂÊ ¿ä¼ÒÀÎ c·Î µ¤¿©Á® »ç¶óÁø´Ù. ¹è¿ ³¡¿¡ »õ ¿ä¼Ò¸¦ Ãß°¡ÇÏ´Â Appendµ¿ÀÛÀº ¹è¿ ³¡¿¡ »ðÀÔÇÏ´Â °Í°ú °°À¸¹Ç·Î Insert¸¦ ´ë½Å È£ÃâÇ쵂 »ðÀÔÇÒ À§Ä¡¸¦ NULL ¹®ÀÚ°¡ ÀÖ´Â À§Ä¡ÀÎ strlen(ar)·Î ÁöÁ¤ÇÏ¸é µÈ´Ù.
ÀÌ ¿¹Á¦·Î ½ÇÇèÇØ ºÃ´Ù½ÃÇÇ ¹è¿µµ ¿ä¼Ò¸¦ ¾ÕµÚ·Î À̵¿½ÃŰ¸é »ðÀÔ°ú »èÁ¦°¡ °¡´ÉÇϱâ´Â ÇÏ´Ù. ¸Þ¸ð¸®¸¦ Á÷Á¢ À̵¿½ÃÄÑ¾ß ÇϹǷΠ»ðÀÔ ¼Óµµ°¡ ´Ù¼Ò ´À¸° ÆíÀε¥ ¹è¿ÀÌ ±æ¼ö·Ï, »ðÀÔ À§Ä¡°¡ ¾ÕÂÊÀϼö·Ï À̵¿ ½Ã°£Àº ´õ ¿À·¡ °É¸± °ÍÀÌ´Ù. ÇÏÁö¸¸ »ðÀÔ, »èÁ¦´Â Àб⳪ Ãß°¡ µ¿ÀÛº¸´Ù ºóµµ°¡ ³·°í memmove´Â ±²ÀåÈ÷ °í¼ÓÀ¸·Î µ¿ÀÛ(ÃÊ´ç 20¾ï ¹ÙÀÌÆ® Á¤µµ)Çϱ⠶§¹®¿¡ ¿ì·ÁÇϴ¸¸Å ´À¸®Áö ¾Ê´Ù. memmoveÀÇ ³»ºÎ ÄÚµå´Â ·çÇÁ¸¦ µ¹¸®´Â CÄڵ尡 ¾Æ´Ï¸ç CPU°¡ Çϵå¿þ¾îÀûÀ¸·Î Á÷Á¢ ó¸®ÇÏ´Â ¸¶ÀÌÅ©·Î ÄÚµåÀ̹ǷΠ»ó»óÀ» ºÒÇãÇÒ Á¤µµ·Î ºü¸£´Ù.