ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> <chapter lang=ko> <!-- ÀÛ¼ºÀÚ : yundream --> <!-- ÀÛ¼ºÀÏ : 2004/09/10 --> <!-- ¿¬¶ôó : yundream@joinc.co.kr --> <!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> <title>fseek(3)</title> <!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> <para> ½ÃÆ®¸²À§Ä¡ÀÇ ÀçÁöÁ¤ </para> <!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> <section> <title>»ç¿ë¹ý</title> <para> <screen> #include <stdio.h> int fseek(FILE *stream, long offset, int whence); long ftell(FILE *stream); void rewind(FILE *stream); int fgetpos(FILE *stream, fpos_t *pos); int fsetpos(FILE *stream, fpos_t *pos); </screen> </para> </section> <!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> <section> <title>¼³¸í</title> <para> fseek()ÇÔ¼ö´Â <emphasis>stream</emphasis>¿¡¼ÀÇ À§Ä¡¸¦ º¯°æÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. »õ·Î¿î À§Ä¡´Â <emphasis>offset</emphasis>À» ÅëÇØ¼ ¹ÙÀÌÆ® ´ÜÀ§·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. À§Ä¡ º¯°æÀ» À§Çؼ´Â ±âÁØÁ¡ÀÌ ÀÖ¾î¾ß ÇҰǵ¥, ÀÌ´Â <emphasis>whence</emphasis>¸¦ ÀÌ¿ëÇØ¼ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. whence´Â À§Ä¡º¯°æÀ» À§ÇÑ ±âÁØÁ¡¿¡ µû¶ó¼ <emphasis>SEEK_SET</emphasis> <emphasis>SEEK_CUR</emphasis>, <emphasis>SEEK_END</emphasis>°¡ ÀÖ´Ù. SEEK_SET´Â ½ÃÀÛÁ¡À», SEEK_CURÀº ÇöÀç ½ºÆ®¸²¿¡¼ÀÇ À§Ä¡¸¦, SEEK_END´Â ½ºÆ®¸²ÀÇ ¸¶Áö¸·Á¡À» ±âÁØÀ¸·Î ÇÑ´Ù. </para> <para> ftell()ÇÔ¼ö´Â <emphasis>stream</emphasis>¿¡¼ÀÇ ÇöÀç À§Ä¡¸¦ ±¸Çϱâ À§Çؼ »ç¿ëÇÑ´Ù. </para> <para> rewind()ÇÔ¼ö´Â <emphasis>stream</emphasis>¿¡¼ÀÇ À§Ä¡¸¦ óÀ½À¸·Î µÇµ¹¸®±â À§Çؼ »ç¿ëÇÑ´Ù. rewind()´Â fseek()¸¦ ÀÌ¿ëÇØ¼ µ¿ÀÏÇÏ°Ô ±¸ÇöÇÒ ¼ö ÀÖ´Ù. <screen> (void)fseek(stream, 0L, SEEK_SET) </screen> fgetpos()¿Í fsetpos()´Â ftell()°ú fseek()ÀÇ Á¶ÇÕ(whence´Â SEEK_SET)ÀÌ´Ù. Áï À§Ä¡¸¦ º¯°æÇϰí ÇöÀçÀÇ À§Ä¡°ªÀ» fpost_t °´Ã¼¿¡ µÇµ¹·ÁÁØ´Ù. </para> </section> <!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> <section> <title>¹Ýȯ°ª</title> <para> rewind()ÇÔ¼ö´Â ¾Æ¹«°Íµµ µÇµ¹·ÁÁÖÁö ¾Ê´Â´Ù. fgetpos(), fseek(), fsetpos()´Â 0À» ftell()´Â ÇöÀç À§Ä¡¸¦ µÇµ¹·ÁÁØ´Ù. ½ÇÆÐÇßÀ» °æ¿ì¿¡´Â -1À» ¸®ÅÏÇÑ´Ù. </para> </section> <!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> <section> <title>¿¡·¯</title> <para> <variablelist> <varlistentry> <term>EBADF</term> <listitem> <para> <emphasis>stream</emphasis>ÀÌ À§Ä¡¸¦ Á¤ÇÒ ¼ö ¾ø´Â ½ºÆ®¸²ÀÌ´Ù. STDOUT, STDINÀÌ ´ëÇ¥ÀûÀÎ À§Ä¡¸¦ Á¤ÇÒ ¼ö ¾ø´Â ½ºÆ®¸²ÀÌ´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EINVAL</term> <listitem> <para> <emphasis>whence</emphasis>ÀÎÀÚ°¡ SEEK_SET, SEEK_END, SEEK_CURÀÌ ¾Æ´Ñ °ªÀ» »ç¿ëÇß´Ù. </para> </listitem> </varlistentry> <varlistentry> <term>EINTR</term> <listitem> <para> ½Ã½ºÅÛ È£ÃâÀÌ ÀÎÅÍ·´Æ® µÇ¾ú´Ù. </para> </listitem> </varlistentry> </variablelist> </para> </section> <!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù --> <!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> <!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ ¿Ã·ÁÁּŵµ µË´Ï´Ù --> <!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê --> <!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼ ¿Ã¸®°Ú½À´Ï´Ù --> <!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä --> <section> <title>¿¹Á¦</title> <para> <screen> #include <stdio.h> #include <unistd.h> #include <stdlib.h> int main(int argc, char **argv) { FILE *fp; char buf[256]; char gline[12]; int linenum = 0; int inputline; int *line_index; fp = fopen(argv[1], "r"); if (fp == NULL) { perror("open error"); return 1; } // ¶óÀÎÀÇ °¹¼ö¸¦ °è»êÇÑ´Ù. while(fgets(buf, 255, fp) != NULL) { if (buf[strlen(buf)-1] == '\n') linenum++; } // ¶óÀÎÀÇ °¹¼ö¸¸Å ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ´Ù. // line_index ¹è¿¿¡´Â °¢ ¶óÀÎÀÇ À§Ä¡°¡ µé¾î°£´Ù. line_index = (int *)malloc(sizeof(int) * linenum +1); // ½ºÆ®¸²À» óÀ½À¸·Î µÇµ¹¸°´Ù. rewind(fp); linenum = 0; // ÆÄÀÏÀÇ Ã³À½ºÎÅÍ µ¹¸é¼ // ftell()À» ÀÌ¿ë °¢ ¶óÀÎÀÇ À§Ä¡(offset)¸¦ ÀúÀåÇÑ´Ù. line_index[0] = 0; while(fgets(buf, 255, fp) != NULL) { // »ç½ÇÀº ¶óÀÎÀÇ Å©±â°¡ 255¸¦ ÃʰúÇÒ °æ¿ì ÀÌ¿¡ ´ëÇÑ // ´ëÃ¥À» ¸¶·ÃÇØ¾ß ÇÏÁö¸¸ ±ÍÂúÀº °ü°è·Î ³Ñ¾î°£´Ù. if (buf[strlen(buf)-1] == '\n') { line_index[linenum+1] = ftell(fp); linenum ++; } } printf("Line num is %d\n", linenum); // ¶óÀÎ ¹øÈ£¸¦ ÀÔ·ÂÇϸé ÇØ´ç ¶óÀÎÀ¸·Î // fseek()ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼ Á¡ÇÁÇÏ°í ¶óÀÎÀÇ ³»¿ëÀ» Ãâ·ÂÇÑ´Ù. while(1) { printf("Goto Line : "); fgets(gline, 11, stdin); gline[strlen(gline) - 1] = '\0'; inputline = atoi(gline); if (inputline < linenum && inputline > -1) { fseek(fp, line_index[inputline], SEEK_SET); fgets(buf, 255, fp); printf("%d(%d) : %s", inputline, line_index[inputline],buf); } else { printf("input num Error (0 - %d)\n", linenum-1); } printf("\n"); } } </screen> </para> </section> <section> <title>Âü°í¹®Çå</title> <para> <orderedlist> <listitem> <para> lseek(2) </para> </listitem> <listitem> <para> <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_seek">seek¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ À§Ä¡ º¯°æ</ulink> </para> </listitem> </orderedlist> </para> </section> </chapter> |
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|