17-2-¶ó.ÀÓÀÇ Á¢±Ù

½ºÆ®¸²Àº ´ÙÀ½ ÀÔÃâ·ÂÇÒ ÆÄÀÏÀÇ À§Ä¡¸¦ Ç×»ó ±â¾ïÇϰí Àִµ¥ ÀÌ À§Ä¡¸¦ FP(File Position)¶ó°í ÇÑ´Ù. ÃÖÃÊ ÆÄÀÏÀ» ¿­ ¶§ FP´Â ¼±µÎ¸¦ °¡¸®Å°°í ÀÖÀ¸¸ç ½ºÆ®¸²¿¡¼­ ³»¿ëÀ» Àаųª ¾µ ¶§ FP´Â ¾×¼¼½ºÇѸ¸Å­ ÀÚµ¿À¸·Î µÚ·Î À̵¿ÇÑ´Ù. fgets¸¦ ¹Ýº¹ÀûÀ¸·Î È£ÃâÇϱ⸸ Çϸé FP°¡ ÀÐÀº¸¸Å­ À̵¿ÇϹǷΠÆÄÀÏÀÇ ¸ðµç ³»¿ëÀ» ÁÙ ´ÜÀ§·Î ¼ø¼­´ë·Î ÀÐÀ» ¼ö ÀÖ´Â °ÍÀÌ´Ù.

ÀÌ·± ½ÄÀ¸·Î ÆÄÀÏÀÇ Ã³À½ºÎÅÍ µÚÂÊÀ¸·Î ¼ø¼­´ë·Î ³»¿ëÀ» ¾×¼¼½ºÇÏ´Â °ÍÀ» ¼øÂ÷ Á¢±Ù(Sequential Access)À̶ó°í ÇÑ´Ù. ÀÌ¿¡ ºñÇØ ÆÄÀÏÀÇ ÀÓÀÇ À§Ä¡·Î À̵¿Çϸ鼭 ¿øÇÏ´Â ³»¿ëÀ» Àд ¹æ¹ýÀ» ÀÓÀÇ Á¢±Ù(Random Access)À̶ó°í ÇÑ´Ù. ´ÙÀ½ ¾×¼¼½ºÇÒ À§Ä¡¸¦ ¿Å±â°í ½ÍÀ» ¶§´Â FP¸¦ ¿øÇÏ´Â À§Ä¡·Î ¿Å±ä ÈÄ ¾×¼¼½º ÇÔ¼ö¸¦ È£ÃâÇÏ¸é µÈ´Ù.

FP°¡ ½ºÆ®¸²ÀÇ ´ÙÀ½ ÀÔÃâ·Â À§Ä¡¸¦ °¡¸®Å°´Â °ÍÀº È­¸éÀÇ Ä¿¼­°¡ ´ÙÀ½ Ãâ·ÂµÉ À§Ä¡¸¦ °¡¸®Å°´Â °Í°ú À¯»çÇÏ´Ù. È­¸éÀÇ Ä¿¼­¸¦ ¿Å±æ ¶§ gotoxy¸¦ »ç¿ëÇÏ´Â °Íó·³ ½ºÆ®¸²ÀÇ FP¸¦ ¿Å±â´Â ÇÔ¼öµµ Á¸ÀçÇϴµ¥ ´ÙÀ½ ÇÔ¼ö°¡ FP¸¦ ¿øÇÏ´Â °÷À¸·Î ¿Å°ÜÁØ´Ù.

 

int fseek(FILE *stream, long offset, int origin);

 

ù ¹øÂ° Àμö´Â ´ë»ó ½ºÆ®¸²ÀÌ¸ç µÎ ¹øÂ° Àμö offsetÀº FP¸¦ ¾îµð·Î ¿Å±æ °ÍÀ̰¡¸¦ ÁöÁ¤ÇÏ¸ç ¼¼ ¹øÂ° Àμö originÀº ¾îµð¸¦ ±âÁØÀ¸·Î FP¸¦ ¿Å±æ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. originÀº ´ÙÀ½ ¼¼ °¡Áö Á¾·ù°¡ ÀÖ´Ù.

SEEK_SETÀº ½ºÆ®¸²ÀÇ ¼±µÎ¸¦ ±âÁØÀ¸·Î FP¸¦ À̵¿½Ã۸ç SEEK_CUR´Â ÇöÀç À§Ä¡, SEEK_END´Â ½ºÆ®¸²ÀÇ ³¡À» ±âÁØÀ¸·Î ÇÑ´Ù. offsetÀº originÀÌ SEEK_ENDÀÏ °æ¿ì À½¼ö¿©¾ß Çϸç SEEK_CURÀÏ °æ¿ì ¾ç¼ö, À½¼ö ¸ðµÎ °¡´ÉÇÏ´Ù. ´ÙÀ½ ¿¹Á¦´Â Test.txt ÆÄÀÏÀ» ¿¬ ÈÄ ¼±µÎ¿¡¼­ 24¹ÙÀÌÆ® µÚÂÊÀ¸·Î À̵¿ÇÑ ÈÄ ÁÙ ³¡±îÁö Àоî È­¸éÀ¸·Î Ãâ·ÂÇÑ´Ù.

 

¿¹ Á¦ : fseek

#include <Turboc.h>

 

void main()

{

     FILE *f;

     char buf[256];

 

     f=fopen("c:\\Test.txt","rt");

     if (f!=NULL) {

          fseek(f,24,SEEK_SET);

          fgets(buf,256,f);

          printf("%s",buf);

          fclose(f);

     }

}

 

½ÇÇàÇØ º¸¸é ù °ÁÙ¿¡¼­ 24¹ÙÀÌÆ®¸¸Å­ °Ç³Ê¶Ù°í "»ý¼ºµÈ ÅØ½ºÆ® ÆÄÀÏÀÔ´Ï´Ù."¸¸ Ãâ·ÂµÉ °ÍÀÌ´Ù. ÆÄÀÏÀ» ¿­¾úÀ» ¶§ FP´Â ¼±µÎ¸¦ °¡¸®Å°°í ÀÖÁö¸¸ fseek ÇÔ¼ö·Î ¼±µÎ ±âÁØ 24¹ÙÀÌÆ® À§Ä¡·Î À̵¿½ÃÄױ⠶§¹®¿¡ fgets´Â ÀÌ À§Ä¡ºÎÅÍ °³Çà ¹®ÀÚ¸¦ ¸¸³¯ ¶§±îÁö ÀоîµéÀδÙ.

ÅØ½ºÆ® ÆÄÀÏÀÇ Æ¯Á¤ ¹®ÀÚ¿­À» Àбâ À§ÇØ ÀÓÀÇ Á¢±ÙÀ» »ç¿ëÇÏ´Â °ÍÀº »ç½Ç º°·Î ½Ç¿ë¼ºÀÌ ¾ø´Ù. ÀÏÁ¤ÇÑ Å©±â¸¦ °¡Áö´Â ±¸Á¶Ã¼ ¹è¿­ÀÌ ÀúÀåµÈ ÆÄÀÏ¿¡¼­ n¹øÂ° ±¸Á¶Ã¼¸¦ ¾×¼¼½ºÇÒ ¶§ ÀÓÀÇ Á¢±ÙÀÌ »ç¿ëµÇ¸ç Çö½ÇÀûÀÎ ½Ç¿ë¼ºÀÌ ÀÖ´Ù. ´ÙÀ½ µÎ ÇÔ¼ö´Â ÇöÀç FP¸¦ Á¶»çÇϰųª ¸®¼ÂÇÑ´Ù.

 

long ftell(FILE *stream);

void rewind(FILE *stream);

 

ftellÀº ½ºÆ®¸²ÀÇ ÇöÀç FP¸¦ Á¶»çÇϴµ¥ Ä¿¼­ÀÇ wherex, wherey ÇÔ¼ö¿¡ ´ëÀÀµÈ´Ù°í ÇÒ ¼ö ÀÖ´Ù. rewind´Â FP¸¦ ÆÄÀÏ ¼±µÎ·Î º¸³»´Âµ¥ fseek(f,0,SEEK_SET)°ú µ¿ÀÏÇÑ ¸í·ÉÀÌ´Ù. ÆÄÀÏÀÇ Ã³À½ºÎÅÍ ´Ù½Ã ¾×¼¼½ºÇÏ°í ½ÍÀ» ¶§ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. fseek, ftell°ú ¶È°°Àº µ¿ÀÛÀ» ÇÏ´Â fgetpos, fsetpos¶ó´Â ÇÔ¼öµéµµ ÀÖ´Ù.