°í¼öÁØ ÀÔÃâ·Â ÇÔ¼öµéÀº ½ºÆ®¸²À» ´ë»óÀ¸·Î ÀÔÃâ·ÂÀ» ¼öÇàÇÑ´Ù. ½ºÆ®¸²À̶õ ÆÄÀϻӸ¸ ¾Æ´Ï¶ó Űº¸µå³ª ¸ð´ÏÅÍó·³ ¹ÙÀÌÆ®¸¦ ¿¬¼ÓÀûÀ¸·Î ÀÔÃâ·ÂÇÏ´Â ¹°¸®ÀûÀÎ ÀåÄ¡±îÁö¸¦ Æ÷°ýÇÏ´Â °³³äÀ̹ǷΠ°í¼öÁØ ÀÔÃâ·Â ÇÔ¼ö·Î ÀÌ·± ÀåÄ¡µéÀ» ´Ù·ê ¼ö ÀÖ´Ù. Űº¸µå³ª ȸéÀ» ½ºÆ®¸²À¸·Î °ü¸®ÇϰíÀÚ ÇÒ ¶§´Â ¹Ì¸® Á¤ÀǵǾî Àִ ǥÁØ ½ºÆ®¸²À» »ç¿ëÇÑ´Ù.
|
À̸§ |
¼³¸í |
¹öÆÛ |
|
stdin |
Ç¥ÁØ ÀÔ·Â |
»ç¿ë |
|
stdout |
Ç¥ÁØ Ãâ·Â |
¹Ì»ç¿ë |
|
stderr |
Ç¥ÁØ ¿¡·¯ |
¹Ì»ç¿ë |
FILE *¸¦ Àμö·Î ¿ä±¸ÇÏ´Â ÇÔ¼ö¿¡ Ç¥ÁØ ½ºÆ®¸²À» ´ë½Å »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ ½ºÆ®¸²µéÀº ¹Ì¸® Á¤ÀǵǾî Àֱ⠶§¹®¿¡ º°µµ·Î ¿ÀÇÂÇÒ ÇÊ¿ä¾øÀÌ ¹Ù·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. Ç×»ó ¿·Á ÀÖÀ¸¹Ç·Î ´Ù »ç¿ëÇÑ ÈÄ¿¡ ´ÝÀ» Çʿ䵵 ¾ø´Ù. Ç¥ÁØ ½ºÆ®¸²À» »ç¿ëÇÏ´Â °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.
|
¿¹ Á¦ : PredefinedStream |
#include <Turboc.h>
void main()
{
char buf[256];
fputs("¹®ÀÚ¿À» ÀÔ·ÂÇØ º¸½Ã¿À : ",stdout);
fgets(buf,256,stdin);
fputs(buf,stderr);
}
fputs ÇÔ¼ö´Â ½ºÆ®¸²À¸·Î ¹®ÀÚ¿À» Ãâ·ÂÇÏ´Â ÇÔ¼öÀε¥ fopenÀ¸·Î ¿¬ FILE Æ÷ÀÎÅÍ ´ë½Å Ç¥ÁØ Ãâ·Â ½ºÆ®¸²ÀÎ stdoutÀ» ÁÖ¸é ÀÌ ¹®ÀÚ¿ÀÌ È¸éÀ¸·Î Ãâ·ÂµÈ´Ù. ȸéÀÌ ¸¶Ä¡ ÆÄÀÏÀÎ °Íó·³ ¹®ÀÚ¿ÀÌ Ãâ·ÂµÇ´Â °ÍÀÌ´Ù. fgetsÇÔ¼öÀÇ ¸¶Áö¸· Àμö·Î stdinÀ» ÁÖ¸é Űº¸µå¿¡¼ ¹®ÀÚ¿À» ÀÔ·Â¹Þ¾Æ buf¿¡ ä¿ì´Âµ¥ ÀÌ ÇÔ¼ö´Â scanf³ª gets¿Í´Â ´Þ¸® ¹öÆÛÀÇ ±æÀ̸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ¾î »ç¿ëÀÚ°¡ ¹öÆÛ ±æÀÌ ÀÌ»óÀ» ÀÔ·ÂÇÏ´õ¶óµµ ¹è¿ ¹üÀ§¸¦ ³Ñ¾î¼Áö ¾Êµµ·Ï ÇÑ´Ù.
stderr´Â Ç¥ÁØ Ãâ·Â ½ºÆ®¸²ÀÎ stdout°ú ¸¶Âù°¡Áö·Î ȸéÀ» °¡¸®Å°¸ç ÁÖ·Î ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϱâ À§ÇØ »ç¿ëÇÑ´Ù. µðÆúÆ®´Â ȸéÀ¸·Î µÇ¾î ÀÖÁö¸¸ ÇÁ¸°Åͳª ÆÄÀÏ·Î ÀçÁöÇâ(Redirection)ÇÒ °æ¿ì ¿¡·¯ ¸Þ½ÃÁö¸¦ º°µµÀÇ ÀåÄ¡·Î º¸³¾ ¼ö ÀÖ´Ù. ÅëÇÕ °³¹ß ȯ°æÀÌ ÀϹÝȵDZâ ÀüÀÇ ½Ì±Û ŽºÅ· ȯ°æ¿¡¼ µð¹ö±ë ¸ñÀûÀ¸·Î ÀÌ ½ºÆ®¸²À» »ç¿ëÇß¾úÀ¸³ª ¿äÁòÀº ±×·² Çʿ䰡 °ÅÀÇ ¾ø¾îÁ³´Ù.
Ç¥ÁØ ½ºÆ®¸² Áß¿¡ stdinÀº ¹öÆÛ¸¦ »ç¿ëÇϱ⠶§¹®¿¡ stdinÀ¸·ÎºÎÅÍ ÀÔ·ÂÀ» ¹Þ´Â ÇÔ¼öµéÀº Űº¸µå·ÎºÎÅÍ Á÷Á¢ ÀÔ·ÂÀ» ¹ÞÁö ¾Ê°í ¹öÆÛ¿¡ ÀԷµǾî ÀÖ´Â °ªÀ» ²¨³»¿Â´Ù. ±×·¯´Ù º¸´Ï ¹Ì¸® ÀÔ·ÂÇØ ³õÀº ÅØ½ºÆ®°¡ ´ÙÀ½ ¹ø ÀÔ·Â ÇÔ¼ö°¡ È£ÃâµÉ ¶§ ÀÐÇôÁö´Â °æ¿ì°¡ Á¾Á¾ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ ½ÇÇàÇØ º¸ÀÚ.
|
¿¹ Á¦ : fflush |
#include <Turboc.h>
void main()
{
char buf[256];
for (;;) {
printf("¹®ÀÚ¿À» ÀÔ·ÂÇϽÿÀ(³¡³¾ ¶§ 0) : ");
scanf("%s",buf);
if (strcmp(buf,"0") == 0) {
break;
}
//fflush(stdin);
printf("ÀÔ·ÂÇÑ ¹®ÀÚ¿Àº \"%s\"ÀÔ´Ï´Ù.\n",buf);
}
}
scanf·Î ¹®ÀÚ¿À» ÀÔ·Â¹Þ¾Æ ±×´ë·Î ȸéÀ¸·Î Ãâ·ÂÇϱ⸦ °è¼Ó ¹Ýº¹ÇÏ´Â °£´ÜÇÑ µ¿ÀÛÀ» ÇÑ´Ù. aaa ÀÔ·Â, bbb ÀÔ·Â, ccc ÀÔ·ÂÀ» °¢°¢ µû·ÎÇÏ¸é ¾Æ¹« ¹®Á¦°¡ ¾øÁö¸¸ aaa bbb ccc¸¦ ÇѲ¨¹ø¿¡ ÀÔ·ÂÇϸé ÀÌ»ó µ¿ÀÛÀ» ÇÑ´Ù. aaa¸¦ Ãâ·ÂÇÑ ÈÄ ÀÔ·ÂÀ» ´ë±âÇÏÁö ¾Ê°í ¿¬À̾î bbb, ccc°¡ Ãâ·ÂµÇ¾î ¹ö¸°´Ù. ¿Ö³ÄÇϸé scanf ÇÔ¼ö´Â ¹®ÀÚ¿À» ÀԷ¹ÞÀ» ¶§ °ø¹éÀ¸·Î ±¸ºÐµÈ ´Ü¾î±îÁö¸¸ ÀÔ·Â¹Þ°í ³ª¸ÓÁö´Â ¹öÆÛ¿¡ ±×´ë·Î ³²°Ü µÎ¸ç ´ÙÀ½ ¹ø¿¡ ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â °ªÀ» Àоî¿À±â ¶§¹®ÀÌ´Ù.
½Ç½Ã°£À¸·Î ÀÔ·ÂÀ» ¹Þ¾Æ¾ß ÇÏ´Â ÇÁ·Î±×·¥ÀÇ °æ¿ì ¹öÆÛ¿¡ ¾ÆÁ÷ ÀÐÁö ¾ÊÀº ¹®ÀÚ°¡ ³²¾Æ ÀÖ´Ù¸é ÀÔ·Â ´ë±â¸¦ ÇÏÁö ¾ÊÀ» »Ó¸¸ ¾Æ´Ï¶ó ¹öÆÛÀÇ ¹®ÀÚ¸¦ ¹Ù·Î ÀÐ¾î ¹ö¸®´Â ¹®Á¦°¡ ÀÖ´Ù. ÀÌ ¶§´Â ´ÙÀ½ ÇÔ¼ö·Î ÀÔ·Â ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â ºÒÇÊ¿äÇÑ ÅØ½ºÆ®¸¦ Áö¿î ÈÄ ´Ù½Ã ÀÔ·ÂÀ» ¹Þ¾Æ¾ß ÇÑ´Ù.
int fflush(FILE *stream);
¹öÆÛ´Â ¿ø·¡ ¿î¿µÃ¼Á¦°¡ °ü¸®ÇÏ´Â °ÍÀ̸ç Àû´çÇÑ ½Ã°£ÀÌ µÇ¸é, ¿¹¸¦ µé¾î ¹öÆÛ°¡ °¡µæ Â÷°Å³ª ½ºÆ®¸²À» ´ÝÀ» ¶§ ¶Ç´Â ÇѰ¡ÇÒ ¶§ ¹é±×¶ó¿îµå¿¡¼ ºñµ¿±âÀûÀ¸·Î ºñ¿öÁø´Ù. ±×·¡¼ ÀÀ¿ë ÇÁ·Î±×·¥Àº ¹öÆÛ °ü¸®¿¡ ´ëÇØ¼´Â ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù. ±×·¯³ª ´çÀå »ç¿ëÇØ¾ß ÇÒ µ¥ÀÌÅͶó¸é ¹öÆÛ°¡ ºñ¿öÁú ¶§±îÁö ±â´Ù¸± ¼ö ¾øÀ¸¸ç Áï½Ã ¹öÆÛ¸¦ ºñ¿ö¾ß Çϴµ¥ À̶§ fflush ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.
Ç÷¯½¬¶õ ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â µ¥ÀÌÅ͸¦ ºñ¿î´Ù´Â ¶æÀε¥ Ãâ·Â¿ëÀÏ °æ¿ì Ãâ·Â ½ºÆ®¸²À¸·Î ¿ÏÀüÈ÷ º¸³»°í ÀԷ¿ëÀÏ °æ¿ì´Â ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â µ¥ÀÌÅ͸¦ »èÁ¦ÇÑ´Ù. Ãâ·Â ´ë±âÁßÀÎ µ¥ÀÌÅ͸¦ Áï½Ã ¹öÆÛ·Î º¸³»°Å³ª ÀÔ·Â ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â ºÒÇÊ¿äÇÑ ÅØ½ºÆ®¸¦ Áö¿ï ¶§´Â fflush ÇÔ¼ö·Î ¹öÆÛ¸¦ ºñ¿ì¸é µÈ´Ù. fflush(stdin)¸í·ÉÀ¸·Î ÀÔ·Â ¹öÆÛ¸¦ ºñ¿î ÈÄ scanf¸¦ È£ÃâÇϸé scanf´Â Ç×»ó »õ·Î ÀÔ·ÂÀ» ¹ÞÀ» °ÍÀÌ´Ù.
´ÙÀ½ ¿¹Á¦¿Í °°Àº »óȲ¿¡¼µµ fflush ÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù. scanf ÇÔ¼ö´Â Á¤¼ö¸¦ ÀԷ¹ÞÀ» ¶§ Enter¸¦ ¹öÆÛ¿¡ ³²°ÜµÎ´Â Ư¼ºÀÌ ÀÖ´Ù. ±×·¡¼ Á¤¼ö ÀÔ·Â ÈÄ ¹®ÀÚ¸¦ °ð¹Ù·Î ÀԷ¹ÞÀ¸¸é ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â Enter°¡ ¹®ÀÚ·Î ÀÐÇôÁø´Ù.
|
¿¹ Á¦ : scanbuf |
#include <Turboc.h>
void main()
{
int i;
char ch;
scanf("%d",&i);
scanf("%c",&ch);
printf("i=%d, ch=%c\n",i,ch);
}
12¿Í a¸¦ ÀÔ·ÂÇÑ´Ù°í ÇßÀ» ¶§ EnterŰ·Î µÎ °ªÀ» ±¸ºÐÇϸé a¸¦ ÀÔ·ÂÇϱ⵵ Àü¿¡ Á¤¼ö ÀÔ·Â ¿Ï·á¸¦ À§ÇØ ´©¸¥ Enter°¡ ¹®ÀÚ·Î ÀÐÇôÁ® ¹ö¸°´Ù. ¹®Á¦¸¦ ÇØ°áÇÏ·Á¸é scanf("%c",&ch);¸¦ È£ÃâÇÏ¿© ¹öÆÛ¿¡ ³²¾Æ ÀÖ´Â Enter¸¦ ¸ÕÀú ÀÐ¾î¼ ¹ö¸®°í scanf("%c",&ch); ¸í·ÉÀ» ´Ù½Ã ½ÇÇàÇÏ¿© »õ·Î ÀÔ·Â¹Þ¾Æ¾ß ÇÑ´Ù. ¾Æ´Ï¸é fflush(stdin) ¸í·ÉÀ» »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ¹®ÀÚ¿À» ÀԷ¹ÞÀ» ¶§µµ ¸¶Âù°¡Áö·Î ¹®ÀÚ¿ ³¡ÀÇ EnterÄڵ带 ¹öÆÛ¿¡ ±×´ë·Î ³²°ÜµÐ´Ù. ÀÌ¿¡ ºñÇØ gets´Â ¹®ÀÚ¿ ÀÔ·ÂÀ» ¿Ï·áÇÏ¸é¼ ¹öÆÛÀÇ Enter¸¦ Áö¿ì´Â Ư¼ºÀÌ ÀÖ´Ù.
°ú°Å¿¡´Â ÀÌ·± ÀÔ·Â ÇÔ¼öµéÀÇ µ¿ÀÛ ¹æ½ÄÀ» Àß ±¸ºÐÇÏ°í ¶Ç ¹®Á¦°¡ »ý°åÀ» ¶§ Á¤È®ÇÏ°Ô ÇØ°áÇÏ´Â °ÍÀÌ ´ë´ÜÈ÷ Áß¿äÇß¾ú´Ù. ±×·¡¼ ÀÔÃâ·Â ÇÔ¼öµéÀÇ ¹öÆÛ »ç¿ë ¿©ºÎ¿Í ¿¡·¯ ó¸® ¹æ½Ä, ȯ°æ¿¡ µû¶ó ´Þ¶óÁö´Â µ¿ÀÛ ¹æ½Ä µî¿¡ ´ëÇÑ °ÍµéÀ» ¿½ÉÈ÷ ¿Ü¿ü¾ú°í ¹®¹ý¼¸¶´Ù ÀÌ·± ³»¿ëÀ» °Á¶Çß´Ù. ±×·¯³ª À©µµ¿ìÁî ȯ°æ¿¡¼´Â ÀÌ ÇÔ¼öµéÀÇ ½Ç¿ë¼ºÀÌ ¶³¾îÁö¹Ç·Î ÀÌ·± °Í ±îÁö »ó¼¼ÇÏ°Ô ¿¬±¸ÇÒ Çʿ䰡 ¾ø¾îÁ³´Ù.