C语言文件操作
一、文件的打开与关闭
使用 fopen 打开文件
FILE *file; file = fopen("文件名","文件使用方式");
文件的打开方式
文件使用方式 解释 r 只读。若文件不存在返回空指针 w 只写。若文件存在,则删除其内容,否则创建一个新文件 a 追加。若文件不存在,则创建一个新文件 r+ 读写。指定的文件必须已存在,否则返回NULL w+ 读写。若指定的文件已存在,则其中的内容被删去 a+ 读写。追加写 如果在后面附加 ”b“ ,则表示打开的是二进制文件。
使用 fclose 关闭文件
fclose(文件指针);
二、文件读写常用函数
fgetc 函数
从指定文件读入一个字符fgetc(文件指针);
fread 函数
从指定文件读入一组数据
fread(buffer, size, count, file);
buffer 存放读入数据的内存首地址
size 每个数据项的字节数
count 数据项个数
file 文件类型的指针
fscanf 函数
从指定的文件中格式化读入数据。其一般形式为:
fscanf(文件指针,格式控制,地址表);
读入例子
#include<stdio.h> int main() { FILE *file; //1.dat 为 "Demo1" file = fopen("1.dat","r"); char a; char b[3]; int c; if(file != NULL){ a = fgetc(file); fread(b,sizeof(char),3,file); fscanf(file,"%d",&c); } putchar(a); for(int i = 0; i < 3; i++){ printf(" %c",b[i]); } printf(" %d",c); fclose(file); return 0; }
fputc 函数
将一个字符写到指定的文件中,若写成功返回以输出字符,否则返回 EOF
fputc( int , FILE* );
fwrite 函数
将一组数据写到指定的文件中
fwrite( buffer, size, count, file);
buffer 输出数据的首地址
size 每个数据项的字节数
count 数据项个数
file 文件类型的指针
fprintf 函数
格式化写数据到指定的文件中,形式为
fprintf(文件指针,格式控制,输出表);
读写例子
#include<stdio.h> int main() { FILE *file; //1.dat 为空 file = fopen("1.dat","w+"); char a0 = 'D'; char b0[3] = {'e','m','o'}; int c0 = 2; char a1; char b1[3]; int c1; if(file != NULL){ // 输出 fputc(a0,file); fwrite(b0,sizeof(char),3,file); fprintf(file,"%d",c0); // 读写指针移动到文件开头 rewind(file); // 读入 a1 = fgetc(file); fread(b1,sizeof(char),3,file); fscanf(file,"%d",&c1); } // 打印结果 putchar(a1); for(int i = 0; i < 3; i++){ printf(" %c",b1[i]); } printf(" %d",c1); fclose(file); return 0; }
三、文件的定位
rewind 函数
将文件的读写指针移动到文件的开头。
rewind(文件指针);
fseek 函数
将文件的读写指针移动到文件的指定位置
fseek(文件指针,偏移量,起始位置);
偏移量的类型为长整型
起始位置是指移动文件读写指针的参考位置,有以下三个值
SEEK_SET 或 0 表示文件首
SEEK_CUR 或 1 表示当前读写的位置
SEEK_END 或 2 表示文件尾
ftell 函数
返回文件的当前读写位置,若出错返回(-1L)。其形式为
ftell(文件指针);