17-2-³ª.ÆÄÀÏ ¿­±â

ÆÄÀÏÀ» ¾×¼¼½ºÇÏ·Á¸é ¸ÕÀú ´ë»ó ÆÄÀÏÀ» ¿­¾î¾ß(Open) ÇÑ´Ù. ÆÄÀÏÀ» ¿ÀÇÂÇÑ´Ù´Â °ÍÀº ÆÄÀÏ ÀÔÃâ·ÂÀ» Çϱâ À§ÇÑ Áغñ¸¦ ÇÑ´Ù´Â ¶æÀÌ´Ù. ½ºÆ®¸² ÀÔÃâ·ÂÀ» À§Çؼ­´Â ÆÄÀÏÀÇ µ¥ÀÌÅ͸¦ Àá½Ã ÀúÀåÇÏ´Â ³»ºÎ ¹öÆÛ°¡ ÇÊ¿äÇϸç ÆÄÀÏÀÇ ÇöÀç À§Ä¡(FP)¸¦ ÃʱâÈ­ÇØ¾ß Çϴµ¥ ÀÌ·± Áغñ¸¦ ÇÏ´Â °úÁ¤ÀÌ ¿ÀÇÂÀÌ´Ù. ÆÄÀÏÀ» ¿ÀÇÂÇÒ ¶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

 

FILE *fopen(const char *filename, const char *mode);

 

ÀÌ ÇÔ¼ö´Â ÁöÁ¤ÇÑ ÆÄÀÏÀ» ¾×¼¼½ºÇϱâ À§ÇÑ Áغñ¸¦ Çϸç ÀÌ Á¤º¸µéÀ» °¡Áö´Â FILEÇü ±¸Á¶Ã¼¸¦ »ý¼ºÇÏ°í ±× Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. ÀÌ Æ÷ÀÎÅÍ´Â Àß ¹Þ¾Æ µÎ¾ú´Ù°¡ ÀÌÈÄ ÀÔÃâ·Â ÇÔ¼ö·Î Àü´ÞÇØ ÁÖ¸é µÈ´Ù. fopen ÇÔ¼öÀÇ Àμö¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ.

ÆÄÀÏ À̸§

¾×¼¼½ºÇÒ ´ë»ó ÆÄÀÏÀÇ À̸§ÀÌ´Ù. ÇÊ¿äÇÒ °æ¿ì µå¶óÀ̺ê¿Í µð·ºÅ丮 °æ·Î¸¦ Àü´ÞÇÒ ¼ö ÀÖÀ¸¸ç ÇöÀç À§Ä¡¸¦ ±âÁØÀ¸·Î ÇÑ »ó´ë °æ·Î¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. °æ·Î°¡ »ý·«µÇ°í ÆÄÀÏ À̸§¸¸ ÁÖ¾îÁú °æ¿ì ÇöÀç µð·ºÅ丮¿¡¼­ ÆÄÀÏÀ» ã´Â´Ù. µð·ºÅ丮 ±¸ºÐÀÚ·Î »ç¿ëµÇ´Â ¿ª½½·¹½¬ ¹®ÀÚ´Â ¹®ÀÚ¿­ ³»¿¡¼­ È®Àå¿­ Ç¥½Ã¿¡ »ç¿ëµÇ¹Ç·Î ¹Ýµå½Ã \\·Î ½á¾ß ÇÑ´Ù´Â Á¡À» ÁÖÀÇÇÏÀÚ. C:\Data\File.Ext ÆÄÀÏÀ» ¿ÀÇÂÇÏ·Á¸é "C:\\Data\\File.Ext"¶ó°í ½á¾ß ÇÑ´Ù.

ÆÄÀϸíÀÇ ´ë¼Ò¹®ÀÚ ±¸ºÐ ¿©ºÎ´Â ¿î¿µÃ¼Á¦¿¡ µû¶ó ´Ù¸£´Ù. µµ½º³ª À©µµ¿ìÁî´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾ÊÀ¸¹Ç·Î ¾Æ¹«·¸°Ô³ª ½áµµ »ó°ü¾øÁö¸¸ À¯´Ð½ºÀÇ ÆÄÀÏ ½Ã½ºÅÛÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇϹǷΠ½ÇÁ¦ ÆÄÀϸíÀÇ ´ë¼Ò¹®ÀÚ ±¸¼º°ú ÀÏÄ¡½ÃÄÑ¾ß ÇÑ´Ù. Test.txt ÆÄÀÏÀ» ¿­°í ½ÍÀ» ¶§ TEST.TXT³ª test.txt·Î ÆÄÀϸíÀ» ÁöÁ¤Çϸé À¯´Ð½º³ª ¸®´ª½º´Â ÀÌ ÆÄÀÏÀ» ãÁö ¸øÇÒ °ÍÀÌ´Ù.

¸ðµå

¸ðµå´Â ÆÄÀÏÀ» ¾î¶»°Ô ¿­ °ÍÀÎÁö¸¦ ÁöÁ¤Çϸç ÆÄÀÏÀ» ¿­¾î¼­ ¾î¶² ÀÛ¾÷À» ÇÒ °ÍÀΰ¡¿¡ µû¶ó ´Þ¶óÁø´Ù. mode Àμö¿¡ ´ÙÀ½ ¹®ÀÚµéÀÇ Á¶ÇÕÀ» ÁöÁ¤ÇÑ´Ù.

 

¸ðµå

¼³¸í

r

Àбâ Àü¿ëÀ¸·Î ÆÄÀÏÀ» ¿¬´Ù. ÀÌ ¸ðµå·Î ¿¬ ÆÄÀÏÀº ÀÐÀ» ¼ö¸¸ ÀÖÀ¸¸ç µ¥ÀÌÅ͸¦ ±â·ÏÇÏÁö´Â ¸øÇÑ´Ù. ¸¸¾à ÆÄÀÏÀÌ ¾øÀ» °æ¿ì ¿¡·¯°¡ ¸®ÅϵȴÙ.

w

¾²±â À§ÇØ ÆÄÀÏÀ» ¿¬´Ù. ÀÌ ¸ðµå·Î ¿¬ ÆÄÀÏÀº ¾²±â¸¸ °¡´ÉÇϸç ÀÐÁö´Â ¸øÇÑ´Ù. µµ½º³ª À©µµ¿ìÁîÀÇ ÆÄÀÏÀº ¾²±â Àü¿ë ¼Ó¼ºÀÌ ¾øÁö¸¸ ½ºÆ®¸²Àº ¾²±â Àü¿ë »óÅ·Π¿­ ¼ö ÀÖ´Ù. ÆÄÀÏÀÌ ¾øÀ¸¸é »õ·Î ¸¸µé°í ÀÌ¹Ì Á¸ÀçÇÑ´Ù¸é ±âÁ¸ÀÇ ÆÄÀÏÀº Áö¿öÁø´Ù.

a

Ãß°¡¸¦ À§ÇØ ÆÄÀÏÀ» ¿¬´Ù. Ãß°¡¶õ ÆÄÀÏÀÇ ³¡¿¡ ´Ù¸¥ Á¤º¸¸¦ ´õ ½á ³Ö´Â´Ù´Â ¶æÀÌ´Ù. ÀÌ ¸ðµå·Î ¿¬ ÆÄÀÏÀº ¿ÀÇ Á÷ÈÄ¿¡ FP°¡ ÆÄÀÏÀÇ ³¡À¸·Î À̵¿ÇÑ´Ù. ÆÄÀÏÀÌ ¾øÀ¸¸é »õ·Î ¸¸µç´Ù.

r+

ÀÐ°í ¾²±â°¡ °¡´ÉÇϵµ·Ï ÆÄÀÏÀ» ¿¬´Ù. ÆÄÀÏÀÌ ¾øÀ» °æ¿ì ¿¡·¯°¡ ¸®ÅϵȴÙ.

w+

ÀÐ°í ¾²±â°¡ °¡´ÉÇϵµ·Ï ÆÄÀÏÀ» ¿¬´Ù. ÆÄÀÏÀÌ ¾øÀ» °æ¿ì »õ·Î ¸¸µç´Ù.

a+

Àбâ¿Í Ãß°¡°¡ °¡´ÉÇϵµ·Ï ÆÄÀÏÀ» ¿¬´Ù. ÆÄÀÏÀÌ ¾øÀ¸¸é »õ·Î ¸¸µç´Ù.

 

ÆÄÀÏ ÇüÅÂ

fopenÀÇ µÎ ¹ø° Àμö mode¿¡´Â ¿ÀÇ ¸ðµå¿Ü¿¡µµ ÆÄÀÏÀÇ ÇüŸ¦ ÁöÁ¤ÇÏ´Â Ç÷¡±×¸¦ Ãß°¡·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿­°íÀÚ ÇÏ´Â ÆÄÀÏÀÌ ÅؽºÆ® ÆÄÀÏÀ̸é t¸¦ ºÙÀÌ°í ÀÌÁø ÆÄÀÏÀ̸é b¸¦ ºÙÀδÙ. ÆÄÀÏ ÇüÅ¿¡ ¾Æ¹«·± ÁöÁ¤ÀÌ ¾øÀ¸¸é Àü¿ªº¯¼ö _fnmodeÀÇ °ªÀÌ »ç¿ëµÈ´Ù. ÀÌÁø ÆÄÀÏÀº ¾Æ¹«·± º¯È¯¾øÀÌ ÀÐÇôÁöÁö¸¸ ÅؽºÆ® ÆÄÀÏ ¸ðµå·Î ÆÄÀÏÀ» ¿­¸é ´ÙÀ½ µÎ °¡Áö º¯È¯À» ÇÑ´Ù.

 

¨ç °³Çà Äڵ带 ÀǹÌÇÏ´Â CR/LF Á¶ÇÕÀº LF·Î º¯È¯µÇ¾î ÀÐÇôÁö¸ç LF¸¦ ±â·ÏÇϸé CR/LF°¡ Ãâ·ÂµÈ´Ù. ÀÌ·± º¯È¯À» ÇØ ÁÖ´Â ÀÌÀ¯´Â C ¹®ÀÚ¿­ Ãâ·Â ÇÔ¼öµéÀº °³ÇàÀ» À§ÇØ È®Àå¿­ LF(\n)¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù.

¨è ÆÄÀÏÀÇ ³¡À» ³ªÅ¸³»´Â Ctrl+Z(0x1A)´Â EOF(-1)·Î º¯È¯µÇ¾î ÀÐÇôÁø´Ù. ´Ü "a+" ¸ðµå·Î ¿­¾úÀ» ¶§´Â ³¡ºÎºÐ¿¡ µ¥ÀÌÅ͸¦ Ãß°¡ÇÒ ¼ö ÀÖµµ·Ï Ctrl+Z¸¦ Á¦°ÅÇÑ´Ù.

 

¿ÀÇ ¸ðµå¿Í ÆÄÀÏ ÇüÅ°¡ mode Àμö¿¡ °°ÀÌ ±â·ÏµÇ´Âµ¥ ¿ÀÇ ¸ðµå°¡ ¸ÕÀú ¿À°í ÆÄÀÏ ÇüÅ°¡ µÚ¿¡ ¿À´Â Çü½ÄÀ¸·Î ½á¾ß ÇÑ´Ù. ´Ü, +¹®ÀÚ´Â ÆÄÀÏ ÇüÅ ´ÙÀ½¿¡ ¿Íµµ »ó°ü¾ø´Ù. ´ÙÀ½ÀÌ modeÀμöÀÇ ¿¹Àε¥ ¹®ÀÚ¿­À̹ǷΠ¹Ýµå½Ã °ãµû¿ÈÇ¥¸¦ ½Î ÁÖ¾î¾ß ÇÑ´Ù.

 

¢º "rt" : ÅؽºÆ® ÆÄÀÏÀ» Àбâ Àü¿ëÀ¸·Î ¿¬´Ù.

¢º "wb" : ÀÌÁø ÆÄÀÏÀ» ¾²±â Àü¿ëÀ¸·Î ¿¬´Ù.

¢º "r+b" : ÀÌÁø ÆÄÀÏÀ» Àбâ, ¾²±â °¡´ÉÇϵµ·Ï ¿¬´Ù. "rb+"·Î ¾µ ¼öµµ ÀÖ´Ù.

 

ÀÌ¿Ü¿¡ mode Àμö¿¡´Â ij½Ã¸¦ °ü¸®ÇÏ´Â ¹æ¹ý°ú Àӽà ÆÄÀÏ »ý¼º¿¡ ´ëÇÑ ¸î °¡Áö Ç÷¡±×¸¦ ´õ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

¸®ÅÏ°ª

fopenÀº ÁöÁ¤ÇÑ ÆÄÀÏÀ» ÁöÁ¤ÇÑ ¸ðµå·Î ¿­°í ÀÔÃâ·Â¿¡ ÇÊ¿äÇÑ FILE ±¸Á¶Ã¼¸¦ »ý¼ºÇÑ ÈÄ ±× Æ÷ÀÎÅ͸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à ¿¡·¯°¡ ¹ß»ýÇϸé NULLÀ» ¸®ÅÏÇÑ´Ù. ÆÄÀÏ ÀÔÃâ·Â½Ã¿¡´Â ¿©·¯ °¡Áö ÀÌÀ¯·Î ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÀÌ ÇÔ¼öÀÇ ¸®ÅÏ°ªÀº ¹Ýµå½Ã Á¡°ËÇØ º¸¾Æ¾ß ÇÑ´Ù. ÆÄÀÏÀÌ ¾ø°Å³ª µð½ºÅ© ¿ë·®ÀÌ ºÎÁ·Çϰųª ÂøÅ»½Ä ¹Ìµð¾îÀÇ ¹®ÀÌ ¿­·Á Àְųª ÇÏ´Â ÀÌÀ¯·Î ¾ðÁ¦µçÁö ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ fopen ÇÔ¼ö´Â Åë»ó ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î »ç¿ëÇÑ´Ù.

 

FILE *f;

f=fopen("c:\\¿µÈ­\\¿µ±¸¿Í¶¯Ä¥ÀÌ.avi","rb");

if (f == NULL) {

     printf("¾ó¾¾±¸. ÆÄÀÏÀÌ ¾È º¸À̳׿ä\n");

}

 

fopenÀ¸·Î ÆÄÀÏ ¿­±â¿¡ ¼º°øÇßÀ¸¸é °¢Á¾ ÀÔÃâ·Â ÇÔ¼ö¸¦ È°¿ëÇÏ¿© ÆÄÀÏÀÇ µ¥ÀÌÅ͸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ÆÄÀÏÀ» ´Ù »ç¿ëÇÑ ÈÄ¿¡´Â ÆÄÀÏÀ» ´Ý¾Æ¾ß Çϴµ¥ À̶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù.

 

int fclose(FILE *stream);

 

ÀÌ ÇÔ¼ö´Â ¹öÆÛ¿¡ ³²¾ÆÀÖ´Â µ¥ÀÌÅ͸¦ ÆÄÀÏ·Î ¿ÏÀüÈ÷ Ãâ·Â(flush)ÇÏ°í ÆÄÀÏ ÀÔÃâ·ÂÀ» À§ÇØ ³»ºÎÀûÀ¸·Î »ý¼ºÇß´ø FILE ±¸Á¶Ã¼¸¦ ÇØÁ¦ÇÑ´Ù. ´Ù »ç¿ëÇÑ ÆÄÀÏÀº ÀÌ ÇÔ¼ö·Î ¹Ýµå½Ã ´Ý¾Æ¾ß ÇÑ´Ù.