| ²é¿´: 518 | »Ø¸´: 2 | ||
yalefield½ð³æ (ÎÄ̳¾«Ó¢)
|
[×ÊÔ´]
¡¾Ô´´¡¿Ì¸Ì¸EOFÓëfeof() ÒÑÓÐ2È˲ÎÓë
|
|
¿´µ½tjylר¼Ò¹ËÎʵÄÌû×Ó¡¶CÓïÑÔÖÐÎļþ¶ÁÈ¡µÄÒ»¸öС¼¼ÇÉ ¡·£¨http://muchong.com/bbs/viewthread.php?tid=1990840£©£¬ÀïÃæÈÔÈ»ÔÚÓÃfeof()¡£ ½ñÌ죬¾Í̸̸Õâ¸öfeof()¿©¡£ ºÜ¶à³ÌÐòÔÚ¶ÁÈ¡Îı¾Îļþʱ£¬¾³£»á³öÏÖÒ»¸öÓÐȤµÄÏÖÏ󣺳ÌÐò»á°ÑÎļþµÄ×îºóÒ»ÐжÁÁ½±é¡£Òò´ËºÜ¶àÈí¼þ¶¼ÒªÇóÎı¾ÎļþÒªÔÚ×îºóÌí¼ÓÒ»¸ö¿ÕÐС£Ôì³ÉÕâÖÖÞÏÞεÄÔÒòÖ÷ÒªÔÚÓÚ±à³Ìʱ¶ÔÓÚÈçºÎÅжÏÎļþĩβ²úÉúÁËÎó½â¡£ ÒÔCÓïÑÔΪÀý£¬ºÜ¶à½Ì²Ä¡¢²Î¿¼ÊéµÈ¶¼¸ø³öÀàËÆÏÂÃæµÄ´úÂëÀ´½âÊÍÈçºÎÅжÏÎļþ½áÊø£º Õâ¶Î´úÂëµÄ´íÎóÔÚÓÚÎó½âÁËÎļþĩ⣨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()ָʾ¾¿¾¹ÊÇʲô´íÎó¡£ËùÒÔ£¬ÕýÈ·µÄÎļþ¶Áȡѻ·Ó¦¸ÃÊÇ£º ËäÈ»ÉÏÃæÌÖÂÛµÄÊÇÎı¾Îļþ£¬¶ÔÓÚ¶þ½øÖÆÎļþÀ´ËµµÀÀíÊÇÒ»ÑùµÄ¡£ÖÁÓÚ´øÓÐDTDµÄ±ê¼ÇÓïÑÔ£¬»ù±¾É϶¼Êǵ÷ÓÃÆÊÎö³ÌÐò½øÐУ»¶øÊý¾Ý¿âÏà¹ØµÄ²Ù×÷£¬»ù±¾É϶¼ÊÇͨ¹ýÊý¾Ý¿â½Ó¿Úº¯Êý½øÐеģ¬ÕâÀï¾Í²»ÔÙ½éÉÜÁË¡£ [ Last edited by yalefield on 2010-4-24 at 10:31 ] |
» ²ÂÄãϲ»¶
ÇëÎʹ²Í¬Í¨Ñ¶ºÍ¹²Í¬Ò»×÷µÄÈϿɶÈÎÊÌâ
ÒѾÓÐ4È˻ظ´
286·Öµ÷¼Á
ÒѾÓÐ22È˻ظ´
²ÄÁϵ÷¼Á
ÒѾÓÐ4È˻ظ´
085600 295·ÖÇóµ÷¼Á
ÒѾÓÐ19È˻ظ´
²ÄÁϵ÷¼Á
ÒѾÓÐ4È˻ظ´
302Çóµ÷¼ÁÒ»Ö¾Ô¸»ªÖÐʦ·¶´óѧ
ÒѾÓÐ3È˻ظ´
»·¾³285·Ö£¬¹ýÁù¼¶£¬Çóµ÷¼Á
ÒѾÓÐ5È˻ظ´
08¹¤¿ÆÇóµ÷¼Á290·Ö
ÒѾÓÐ8È˻ظ´
321Çóµ÷¼Á Ò»Ö¾Ô¸ Õã½¹¤Òµ´óѧÉúÎïÒ½Ò©
ÒѾÓÐ4È˻ظ´
266·Ö£¬Ò»Ö¾Ô¸µçÆø¹¤³Ì£¬±¾¿Æ²ÄÁÏ£¬Çó²ÄÁÏרҵµ÷¼Á
ÒѾÓÐ4È˻ظ´
» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:
FortranÓÐEOFÎļþ½áβô£¿
ÒѾÓÐ7È˻ظ´
¡¾ÇóÖú¡¿EOFÇë½Ì
ÒѾÓÐ7È˻ظ´
¡¾ÌÖÂÛ¡¿Ì¸Ì¸ÑõÒݶÈÔÚÑÒ½¬ÖеÄ×÷Óá¾ÒÑËÑÎÞÖØ¸´¡¿
ÒѾÓÐ13È˻ظ´
tjyl
½ð³æ (ÕýʽдÊÖ)
- ³ÌÐòÇ¿Ìû: 2
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 3218.1
- Ìû×Ó: 576
- ÔÚÏß: 156.6Сʱ
- ³æºÅ: 765184
¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
resonant(½ð±Ò+2):·ÖÏí£¬½ø²½£º-£© 2010-04-24 12:41
Сľ³æ(½ð±Ò+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
Doct0r_chen
ľ³æ (Ö°Òµ×÷¼Ò)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ¹ó±ö: 0.356
- ½ð±Ò: 2460.6
- Ìû×Ó: 3492
- ÔÚÏß: 658.1Сʱ
- ³æºÅ: 977746
3Â¥2010-04-24 19:26:44














»Ø¸´´ËÂ¥