1. ftell
函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定文件的当前位置。
long ftell(FILE *stream);
2. fwrite
fwrite() 是 C 语言标准库中的一个文件处理函数,功能是向指定的文件中写入若干数据块,如成功执行则返回实际写入的数据块数目。该函数以二进制形式对文件进行操作,不局限于文本文件。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE
*stream)
3. fopen
C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。
注意:r开头的打开文件后不会删除原文件内容
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,只允许读写数据。
rt+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
注意:w开头的,打开文件都会直接将文件先清空
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
注意:ab+的就算使用fseek改变文件句柄的指向,也只会将数据追加在末尾
FILE *fopen(const char *filename, const char *mode)
4. fseek
C 库函数 int fseek(FILE *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
int fseek(FILE *stream, long int offset, int whence)
代码
#include <stdio.h>
#include<malloc.h>
int main ()
{
FILE *fp;
FILE *fp2;
int len;
int len2;
char *out;
out = (char*)malloc(sizeof(char)*4);
for(int i=0;i<4;i++)
{
out[i] = i+'0';
}
fp = fopen("file.txt", "rt+");
if( fp == NULL )
{
perror ("打开文件错误");
return(-1);
}
fseek(fp, 0, SEEK_END);
len = ftell(fp);
fclose(fp);
printf("file.txt 的总大小 = %d 字节\n", len);
fp2 = fopen("file.txt", "rt+");
fseek(fp2,1,SEEK_SET);
fwrite(out,sizeof(char),4,fp2);
len2 = ftell(fp2);
fclose(fp2);
printf("file.txt 的总大小 = %d 字节\n", len2);
getchar();
return(0);
}