±±¾©Ê¯ÓÍ»¯¹¤Ñ§Ôº2026ÄêÑо¿ÉúÕÐÉú½ÓÊÕµ÷¼Á¹«¸æ
²é¿´: 518  |  »Ø¸´: 2

[×ÊÔ´] ¡¾Ô­´´¡¿Ì¸Ì¸EOFÓëfeof() ÒÑÓÐ2È˲ÎÓë

¿´µ½tjylר¼Ò¹ËÎʵÄÌû×Ó¡¶CÓïÑÔÖÐÎļþ¶ÁÈ¡µÄÒ»¸öС¼¼ÇÉ ¡·£¨http://muchong.com/bbs/viewthread.php?tid=1990840£©£¬ÀïÃæÈÔÈ»ÔÚÓÃfeof()¡£

½ñÌ죬¾Í̸̸Õâ¸öfeof()¿©¡£

ºÜ¶à³ÌÐòÔÚ¶ÁÈ¡Îı¾Îļþʱ£¬¾­³£»á³öÏÖÒ»¸öÓÐȤµÄÏÖÏ󣺳ÌÐò»á°ÑÎļþµÄ×îºóÒ»ÐжÁÁ½±é¡£Òò´ËºÜ¶àÈí¼þ¶¼ÒªÇóÎı¾ÎļþÒªÔÚ×îºóÌí¼ÓÒ»¸ö¿ÕÐС£Ôì³ÉÕâÖÖÞÏÞεÄÔ­ÒòÖ÷ÒªÔÚÓÚ±à³Ìʱ¶ÔÓÚÈçºÎÅжÏÎļþĩβ²úÉúÁËÎó½â¡£

ÒÔCÓïÑÔΪÀý£¬ºÜ¶à½Ì²Ä¡¢²Î¿¼ÊéµÈ¶¼¸ø³öÀàËÆÏÂÃæµÄ´úÂëÀ´½âÊÍÈçºÎÅжÏÎļþ½áÊø£º
CODE:
        /* fpÊÇÒѾ­³É¹¦´ò¿ªµÄ¿É¶ÁÎļþÖ¸Õë        */
        while (!feof (fp))
        {
                /* µ÷ÓÃfgets()»òfscanf()µÈº¯Êý¶ÁÈ¡ÎļþÄÚÈÝ        */
                /* ¿ÉÒÔÓÃprintf()Êä³ö¶ÁÈ¡µÄÄÚÈÝ£¬¿´¿´ÊÇ·ñÕýÈ·        */
        }

Õâ¶Î´úÂëµÄ´íÎóÔÚÓÚÎó½âÁËÎļþĩ⣨End-of-file£¬EOF£©µÄº¬ÒåºÍfeof()º¯ÊýµÄ¹¦ÄÜ¡£ËùνÎļþĩ⣬ÍùÍù±»Àí½âΪÎļþµÄ×îºóÒ»¸ö×Ö·ûÊÇEOF£¬¼´¨C1£¬¶øfeof()¶Áµ½Õâ¸öEOF¾Í·µ»ØÒ»¸ö·Ç0Öµ£¬±íʾÎļþ¶ÁÍêÁË¡£

È»¶ø£¬ÕâÊÇÍêÈ«´íÎóµÄ£¡

²»ÂÛÊÇÎı¾»¹ÊǶþ½øÖÆÎļþ£¬Æäĩβ²¢²»´æÔÚÕâôһ¸öEOF×Ö·û£»
feof()±¾ÉíÒ²²¢²»¾ß±¸¡°¶Á¡±µÄ¹¦ÄÜ£¬Ëü·µ»Ø0»¹ÊÇ·Ç0£¬ÒÀ¾ÝµÄÊÇ×î½üÒ»´ÎµÄ¶ÁÈ¡²Ù×÷,Èçfgets()¡¢fscanf()»òfread()µÈº¯Êý£¬ÊÇ·ñÔì³É¡°´íÎó£¨Error£©¡±£¬Òò´Ëfeof()ÓÀÔ¶²»¿ÉÄÜ¡°¶Á¡±µ½Ò»¸öEOF¡£


ÅжÏÎļþ½áÊøµÄÕýÈ·»úÖÆÓ¦¸ÃÊÇÕâÑùµÄ£ºÄÇЩ¾ßÓжÁÈ¡¹¦Äܵĺ¯Êý£¬ÔÚ¶ÁÈëÎļþµÄ×îºóÒ»¸ö×Ö½Ú£¨Last Byte£©Ö®ºó£¬Èç¹û²»ÔÙ¼ÌÐø¶Á£¬ÄÇô³ÌÐòÎÞ´ÓÅжÏÎļþÊÇ·ñ½áÊø£»Ö»ÓÐÔÚ¶ÁÈë×îºóÒ»¸ö×Ö½ÚÖ®ºóÔÙ¼ÌÐøÊÔͼ¶Áȡʱ£¬¹ÜÀí´ÅÅÌÎļþµÄ²Ù×÷ϵͳ²Å»áÉèÖÃÒ»¸ö·Ç0µÄ´íÎóÂ루Error Code£©¡£¶øferror()¡¢feof()µÈº¯ÊýÊÇÒÀ¾ÝÕâ¸ö´íÎóÂëÀ´ÅжÏÎļþ²Ù×÷·½Ãæ³öÏÖÁËʲô´íÎóÒÔ¼°ÎļþÊÇ·ñ½áÊø¡£ÎÞÂÛÊÇÎļþ²Ù×÷¡¢ÄÚ´æ·ÖÅ仹ÊÇÍøÂçͨÐÅ£¬ÕâÖÖÅж¨´íÎóµÄ»úÖÆÊǷdz£ÆÕ±éµÄ¡£

Òò´Ë£¬°´ÕÕÉÏÃæµÄ´úÂ룬µ±fgets()»òfscanf()¶Áµ½Îı¾ÎļþµÄ×îºóÒ»ÐÐʱ£¬²¢Ã»ÓÐÔì³É´íÎó£»´Ëʱ»Øµ½Ñ­»·ÅжÏÓï¾ä£¬feof()×ÔÈ»·µ»Ø0£¬¼ÌÐøÖ´ÐжÁÈ¡£¬¶øÕâ´Î¶ÁÈ¡²Å»á´¥·¢´íÎ󣬵«fgets()»òfscanf()ÉÏ´ÎËù¶ÁÈ¡µÄ±äÁ¿²¢Î´±»¸üУ¬Òò´Ë×îºóÒ»ÐеÄÄÚÈÝ»áÔٴα»Êä³ö£»È»ºó£¬»Øµ½Ñ­»·Åжϣ¬feof()Õâʱ²Å·µ»Ø·Ç0£¬Í˳öÑ­»·¡£ÖÁÓÚÄÇÖÖÒªÇóÎı¾Îļþĩβ¼ÓÒ»¸ö¿ÕÐеÄ×ö·¨£¬Ö»²»¹ýÊǰѿÕÐжÁÁËÁ½±é¶øÒÑ¡£

Æäʵ£¬µ±fgets()·µ»ØNULL»òfscanf()·µ»ØEOFʱ£¬¶¼±íʾ¶ÁÈ¡³ö´í£»ÔÚÕâÖÖÇé¿öÏ£¬²ÅÐèÒªÓÃfeof()»òferror()ָʾ¾¿¾¹ÊÇʲô´íÎó¡£ËùÒÔ£¬ÕýÈ·µÄÎļþ¶Áȡѭ»·Ó¦¸ÃÊÇ£º
CODE:
        /* fpÊÇÒѾ­³É¹¦´ò¿ªµÄ¿É¶ÁÎļþÖ¸Õë        */
        while (fgets(¡­))       
        /* »ò while (fscanf(fp, ¡­)!=EOF)*/
        {
                ¡­
        }
        /* printf(¡°%d %s\n¡±, feof(fp), ferror(fp));         Êä³ö´íÎóÇé¿ö        */

ËäÈ»ÉÏÃæÌÖÂÛµÄÊÇÎı¾Îļþ£¬¶ÔÓÚ¶þ½øÖÆÎļþÀ´ËµµÀÀíÊÇÒ»ÑùµÄ¡£ÖÁÓÚ´øÓÐDTDµÄ±ê¼ÇÓïÑÔ£¬»ù±¾É϶¼Êǵ÷ÓÃÆÊÎö³ÌÐò½øÐУ»¶øÊý¾Ý¿âÏà¹ØµÄ²Ù×÷£¬»ù±¾É϶¼ÊÇͨ¹ýÊý¾Ý¿â½Ó¿Úº¯Êý½øÐеģ¬ÕâÀï¾Í²»ÔÙ½éÉÜÁË¡£

[ Last edited by yalefield on 2010-4-24 at 10:31 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

tjyl

½ð³æ (ÕýʽдÊÖ)


¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
resonant(½ð±Ò+2):·ÖÏí£¬½ø²½£º-£© 2010-04-24 12:41
ѧϰÁË£¬Ð´µÄ·Ç³£ºÃµÄ¡£
¶ÔÓÚfgets,getsÔÚ³ö´íºÍµ½´ïÎļþĩβ¶¼ÊÇ·µ»ØNULL£¬
¶øscanf,fscanf,sscanfÔÚ³ö´íºÍµ½´ïÎļþβ¶¼ÊÇ·µ»ØEOF£¬ÓÃfeofÖ»ÊÇΪÁËÖªµÀµ½µ×ÊDz»ÊÇÒòΪµ½ÁËÎļþĩβ.
FILEÆäʵÊÇÒ»¸ö½á¹¹Ì壬ÀïÃæ°üº¬ÀïÎļþÃèÊö·û¡¢»º³åÇøÖ¸Õë¡¢»º³åÇø³¤¶È¡¢»º³åÇøÄÚµ±Ç°×Ö·ûÊýºÍ³ö´í±ê×¼µÈµÈ¡£
feofµÄʵÏÖÓеÄÊÇÓú꣬Æäʵ¾ÍÊÇÈ¥¼ì²éFILE½á¹¹ÀïµÄ_flags×ֶΡ£
================================
struct _IO_FILE {
  int _flags;           /* High-order word is _IO_MAGIC; rest is flags. */
#define _IO_file_flags _flags

  /* The following pointers correspond to the C++ streambuf protocol. */
  /* Note:  Tk uses the _IO_read_ptr and _IO_read_end fields directly. */
  char* _IO_read_ptr;   /* Current read pointer */
  char* _IO_read_end;   /* End of get area. */
  char* _IO_read_base;  /* Start of putback+get area. */
  char* _IO_write_base; /* Start of put area. */
  char* _IO_write_ptr;  /* Current put pointer. */
  char* _IO_write_end;  /* End of put area. */
  char* _IO_buf_base;   /* Start of reserve area. */
  char* _IO_buf_end;    /* End of reserve area. */
  /* The following fields are used to support backing up and undo. */
  char *_IO_save_base; /* Pointer to start of non-current get area. */
  char *_IO_backup_base;  /* Pointer to first valid character of backup area */
  char *_IO_save_end; /* Pointer to end of non-current get area. */

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  _IO_off_t _old_offset; /* This used to be _offset but it's too small.  */

#define __HAVE_COLUMN /* temporary */
  /* 1+column number of pbase(); 0 is unknown. */
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];

  /*  char* _save_gptr;  char* _save_egptr; */

  _IO_lock_t *_lock;
#ifdef _IO_USE_OLD_IO_FILE
};

==================================
#define __sfeof(p)      (((p)->_flags & __SEOF) != 0)
#define __sferror(p)    (((p)->_flags & __SERR) != 0)
#define __sclearerr(p)  ((void)((p)->_flags &= ~(__SERR|__SEOF)))
#define __sfileno(p)    ((p)->_file)

#ifndef lint
#ifndef _REENTRANT
#define feof(p)         __sfeof(p)
#define ferror(p)       __sferror(p)
#define clearerr(p)     __sclearerr(p)
ûÓÐÕª³­Íê
========================

ÔÚͬʱ¶Á½øÈ¥ÔÙд³öÀ´µÄʱºò
ÆäʵÕâÑù¾Í¿ÉÒÔÁË

fscanf(....)  or fgets(...)
while ( ! feof( fp ) ) {

printf(...) or fputs....

fscanf(....)  or fgets(...)

}
2Â¥2010-04-24 12:34:22
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

Doct0r_chen

ľ³æ (Ö°Òµ×÷¼Ò)


³¤¼ûʶÁË
3Â¥2010-04-24 19:26:44
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ yalefield µÄÖ÷Ìâ¸üÐÂ
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] 08¹¤¿ÆÇóµ÷¼Á290·Ö +5 1314Åõ»¨ 2026-04-02 8/400 2026-04-02 13:16 by ÇÇßÕßÕßÕ
[¿¼ÑÐ] 372·Ö²ÄÁÏÓ뻯¹¤£¨085600£©Ò»Ö¾Ô¸ºþÄÏ´óѧÇóµ÷¼Á +3 À¶¼ãƬ 2026-04-02 4/200 2026-04-02 12:41 by À¶¼ãƬ
[¿¼ÑÐ] 285Çóµ÷¼Á +11 AZMK 2026-04-02 11/550 2026-04-02 12:07 by 1753564080
[¿¼ÑÐ] Àíѧ07»¯Ñ§ 303Çóµ÷¼Á +15 î£08 2026-03-27 16/800 2026-04-02 12:02 by jndximd
[¿¼ÑÐ] Ò»Ö¾Ô¸ÏÃÃÅ´óѧ»¯Ñ§¹¤³Ì£¨×¨Ë¶£©-Êý¶þÓ¢¶þ406·Ö-Çóµ÷¼Á +5 Ïô󻯹¤ 2026-04-01 5/250 2026-04-02 10:03 by jp9609
[¿¼ÑÐ] 367Çóµ÷¼Á +8 ÓóÄàà£à£¡­ 2026-03-28 8/400 2026-04-02 09:20 by olim
[¿¼ÑÐ] Ò»Ö¾Ô¸ÉϺ£º£Ñó´óѧ083200ʳƷѧ˶£¬Çóµ÷¼Á£¬½ÓÊÜÆäËûרҵ +5 whatÕÅ 2026-04-01 5/250 2026-04-01 22:35 by guanxin1001
[¿¼ÑÐ] 085600£¬320·ÖÇóµ÷¼Á +5 ´ó²öС×Ó 2026-04-01 6/300 2026-04-01 19:40 by ÌÆãå¶ù
[¿¼ÑÐ] 285Çóµ÷¼Á +7 AZMK 2026-03-30 13/650 2026-04-01 17:00 by Æß¶È²»ÐÅÈÎ
[¿¼ÑÐ] Çóµ÷¼Á£ºÒ»Ö¾Ô¸£ºÄϾ©´óѧ רҵ£º0705 ×Ü·Ö320 £¬±¾¿Æ985£¬ËÄÁù¼¶Òѹý +3 lfy760306 2026-03-31 3/150 2026-04-01 01:57 by Creta
[¿¼ÑÐ] 085601Ó¢¶þÊý¶þÇóµ÷¼Á ×Ü·Ö325 +4 Óຽº½ 2026-03-31 4/200 2026-03-31 17:38 by ÌÆãå¶ù
[¿¼ÑÐ] 080500-315·Ö¸´ÊÔµ÷¼Á +9 Éϰ¶3821 2026-03-31 9/450 2026-03-31 17:29 by ÌÆãå¶ù
[¿¼ÑÐ] Çóµ÷¼Á +8 11ggg 2026-03-30 8/400 2026-03-31 13:56 by nanaliuyun
[¿¼ÑÐ] 0703»¯Ñ§ +20 ÄÝÄÝninicgb 2026-03-27 20/1000 2026-03-31 13:33 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] µ÷¼ÁÇóԺУÕÐÊÕ +7 º×¾¨¸ë 2026-03-28 7/350 2026-03-31 11:21 by oooqiao
[¿¼ÑÐ] ʳƷ¹¤³Ìר˶һ־ԸÖк£Ñó309Çóµ÷¼Á +5 СÕÅzxyÕÅ 2026-03-26 10/500 2026-03-31 00:29 by jp9609
[¿¼ÑÐ] 085600 286·Ö ²ÄÁÏÇóµ÷¼Á +11 ÂéÀ±öÏÓã 2026-03-27 12/600 2026-03-30 19:33 by Wang200018
[¿¼ÑÐ] 327Çóµ÷¼Á +5 С¿¨²»¿¨. 2026-03-29 5/250 2026-03-30 19:30 by Wang200018
[¿¼ÑÐ] 348Çóµ÷¼Á +6 СÀÁ³æ²»ÀÁÁË 2026-03-28 6/300 2026-03-30 10:29 by Evan_Liu
[¿¼ÑÐ] 0856µ÷¼Á +5 ÇóÇóÈÃÎÒÓÐÊé¶Á° 2026-03-26 6/300 2026-03-27 15:12 by caszguilin
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û