C语言中文件指针和文件位置指针,位置指针相关库函数
2014-07-06 18:25
288 查看
1 文件指针文件指针是指向一个文件的指针,确切的将是指向用文件这个结构体所定义的对象的起始地址,文件指针的移动是指在文件之间来移动,比如:FILE * fp;fp = fopen("/programe/test.txt","a+");fp就表示文件指针。问题:文件指针能不能在文件之间来回移动?如果能的话,需要先释放文件指针吗?如果不能的话,是为什么,是因为这个指针是指针常量吗?解答:简单程序进行测试:[html] view
plaincopy#include <stdio.h>#include <stdlib.h>int main(){FILE * fp;fp = fopen("/program/Demo.c","a+");if(fp == NULL){return -1;}fprintf(fp,"hello world:Demo.c");fp = fopen("/program/getcharDemo.c","a+");if(fp == NULL){return -1;}fprintf(fp,"hello world:getcharDemo.c");fclose(fp);一个指针先后指向两个不同的值,运行结果和程序预想的完全一致,在Demo.c和getcharDemo.c中的最后一行都分别输出了相应的值。说明在这一点上面文件指针和普通的指针是一致的。2 文件位置指针文件位置指针是指文件打开之后,在文件内部进行移动的指针。其数据类型是 fpos_t在MSDN上面是这样说的:fpos_t (long integer, __int64, or structure, depending on the target platform)依据平台架构可能是long型也可能是struct型copyright 1993-1999 by sunmicrosystem这样说:typedef long fpos_ttypedef long long __longlong_t;typedef __longlong_t fpos_t经过32位linux平台上面编码测试发现它的大小是 12个字节。这个pos_t的结构里面应该至少有一个字段表示的是距离文件起始位置的偏移量。C library reference中定义的文件位置指针的操作函数有以下这些:1 获取文件位置指针当前的位置。
plaincopy#include <stdio.h>#include <stdlib.h>int main(){FILE * fp;fp = fopen("/program/Demo.c","a+");if(fp == NULL){return -1;}fprintf(fp,"hello world:Demo.c");fp = fopen("/program/getcharDemo.c","a+");if(fp == NULL){return -1;}fprintf(fp,"hello world:getcharDemo.c");fclose(fp);一个指针先后指向两个不同的值,运行结果和程序预想的完全一致,在Demo.c和getcharDemo.c中的最后一行都分别输出了相应的值。说明在这一点上面文件指针和普通的指针是一致的。2 文件位置指针文件位置指针是指文件打开之后,在文件内部进行移动的指针。其数据类型是 fpos_t在MSDN上面是这样说的:fpos_t (long integer, __int64, or structure, depending on the target platform)依据平台架构可能是long型也可能是struct型copyright 1993-1999 by sunmicrosystem这样说:typedef long fpos_ttypedef long long __longlong_t;typedef __longlong_t fpos_t经过32位linux平台上面编码测试发现它的大小是 12个字节。这个pos_t的结构里面应该至少有一个字段表示的是距离文件起始位置的偏移量。C library reference中定义的文件位置指针的操作函数有以下这些:1 获取文件位置指针当前的位置。
int fgetpos(FILE *stream
, fpos_t *pos
);
posint fsetpos(FILE *stream[code], const fpos_t *
);移动文件位置指针:
long int ftell(FILE *stream
);
int fseek(FILE *stream
, long intoffset
, intwhence
);2 在函数执行过程中移动文件位置指针:
size_t fread(void *ptr
, size_tsize
, size_tnmemb
, FILE *stream
);
size_t fwrite(const void *ptr
, size_tsize
, size_tnmemb
, FILE *stream
);3
long int ftell(FILE *stream
);获取当前位置到文件开头的字符数4
void rewind(FILE *stream
);文件位置指针返回到文件开头5
int fgetc(FILE *stream
);
int fputc(intchar
, FILE *stream
);6
char *fgets(char *str
, intn
, FILE *stream
);
int fputs(const char *str
, FILE *stream
);fgets和fputs系列函数也在读完当前行之后,会把文件位置指针指向下一行的开始处。
相关文章推荐
- 【C语言】文件指针与文件位置指针,位置指针相关操作库函数
- 【C语言】文件指针与文件位置指针,位置指针相关操作库函数
- 【C语言】文件指针与文件位置指针,位置指针相关操作库函数
- C语言feof()函数判断文件位置指针到末尾
- C语言ftell()函数:获取文件读写指针的当前位置
- C语言lseek()函数:移动文件的读写位置
- C语言rewind()函数:将文件指针重新指向文件开头
- 黑马程序员-C语言文件操作相关函数
- C语言文件定位相关函数
- 对比C语言中execv相关的执行文件的三个函数
- 【嵌入式开发】C语言 结构体相关 的 函数 指针 数组
- C语言lseek()函数:移动文件的读写位置
- c语言中可以用fseek来定位文件指针的位置
- C语言 与结构体相关 函数 指针 数组
- C语言 结构体相关 函数 指针 数组
- linux c语言之文件操作相关函数--fopen(),fopen_s(),fread(),fwrite(),fclose(),
- 文件操作函数fseek设置文件指针的位置,第三个参数是起始地址,有0,1,2三个值,分别指首地址,当前地址,文件尾地址EOF;第二个参数是偏移地址正为右,负为左
- 函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数
- C语言对组文件处理的相关函数小结
- C语言中建立和删除文件连接的相关函数讲解