我正在學習C,使用this網站。什麼是文件位置指針?
在fgetc()
功能對筆者說:
此功能從文件中讀取一個字符和閱讀後增加的文件位置指針。
FILE *fp;
fp = fopen(filename, "r");
我想問的是,file position pointer
是從指針fp
與否有什麼不同?
我正在學習C,使用this網站。什麼是文件位置指針?
在fgetc()
功能對筆者說:
此功能從文件中讀取一個字符和閱讀後增加的文件位置指針。
FILE *fp;
fp = fopen(filename, "r");
我想問的是,file position pointer
是從指針fp
與否有什麼不同?
不,他們是不一樣的。 fp
是指向結構FILE
的指針。文件位置指針顯然指向文件中的位置。
你可以在你的包含路徑中看到stdio.h
。在FreeBSD中,FILE被定義爲:
struct __sFILE {
unsigned char *_p; /* (*) current position in (some) buffer */
int _r; /* (*) read space left for getc() */
int _w; /* (*) write space left for putc() */
short _flags; /* (*) flags, below; this FILE is free if 0 */
short _file; /* (*) fileno, if Unix descriptor, else -1 */
struct __sbuf _bf; /* (*) the buffer (at least 1 byte, if !NULL) */
int _lbfsize; /* (*) 0 or -_bf._size, for inline putc */
/* operations */
void *_cookie; /* (*) cookie passed to io functions */
int (*_close)(void *);
int (*_read)(void *, char *, int);
fpos_t (*_seek)(void *, fpos_t, int);
int (*_write)(void *, const char *, int);
/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
unsigned char *_up; /* saved _p when _p is doing ungetc data */
int _ur; /* saved _r when _r is counting ungetc data */
/* tricks to meet minimum requirements even when malloc() fails */
unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
unsigned char _nbuf[1]; /* guarantee a getc() buffer */
/* separate buffer for fgetln() when line crosses buffer boundary */
struct __sbuf _lb; /* buffer for fgetln() */
/* Unix stdio files get aligned to block boundaries on fseek() */
int _blksize; /* stat.st_blksize (may be != _bf._size) */
fpos_t _offset; /* current lseek offset */
struct pthread_mutex *_fl_mutex; /* used for MT-safety */
struct pthread *_fl_owner; /* current owner */
int _fl_count; /* recursive lock count */
int _orientation; /* orientation for fwide() */
__mbstate_t _mbstate; /* multibyte conversion state */
int _flags2; /* additional flags */
};
typedef struct __sFILE FILE;
它表示您當前在文件中的偏移量。這是ftell
的返回值。
指向文件並指向文件中的位置是有區別的。 –
@JohnColeman所以兩者都不同 – Cody
是的。當位置指針前進通過文件時,您需要將'fp'指向文件本身。否則 - 當你完成後,你將如何關閉它? –