½ºÆ®¸²Àº ´ÙÀ½ ÀÔÃâ·ÂÇÒ ÆÄÀÏÀÇ À§Ä¡¸¦ Ç×»ó ±â¾ïÇϰí Àִµ¥ ÀÌ À§Ä¡¸¦ 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¶ó´Â ÇÔ¼öµéµµ ÀÖ´Ù.