本文共 3905 字,大约阅读时间需要 13 分钟。
FILE *fp;fp=open("文件路径","打开模式");//用文件指针来接收文件结构指针地址
c语言中 的 \ 为 转义字符 若想表达 " \ " 需要用 \\
1.打开文本文件
“r” :只读 前提是文件存在
“w” : 只写 如不存在文件则新建,如存在文件则删除重建
“a” :追加 打开时文件指针指向末尾(这意味着在末尾添加数据)文件不存在则打开失败
“r+” :可读可写 前提是文件存在
“w+” :可读可写 新建文件 填写数据 之后可读
“a+” :可读可写 打开是文件指针移动到文件末尾
2.打开二进制文件
在文本文件模式名称后加 后缀 b 其他同文本文件的打开模式
fclose(fp);
fopen() 打开文件先将文件复制到缓冲区 当fclose()关闭文件时 缓冲区数据才会写入磁盘
在程序结束后会自动关闭文件 但手动关闭文件(即用fclose()函数)可以提高系统的执行效率
而且如不关闭,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针。
FILE *fp;fp=open(".....","r");char ch;while (!feof(fp))//feof()判断是否到达文件末尾{ ch =fgetc(fp);//从文件中逐个读取字符赋值给ch}fclose(fp);
fp=open("......","w");char str[8]={ 'a','a','b','b','c','c','d','d','\0'};int i=0;while(str[i]!='\0'){ fputc(str[i],fp);//将字符逐个写入文件中}fclose(fp);
在此第一个代码块中的feof()函数是判断指针是否到达文件末尾 如果到达则返回true
也可以用ch != EOF来进行替换
fgetc()是从文件中读取字符到ch中 而 fputc()是向文件中写入字符串
fputc()第一个参数为要写入文件之中的字符
在此我们不做详细演示
fgets(str,n,fp);//str为字符数组用来存放在文件中读取的字符 n表示每次读取n个字符 fp即为文件指针 fputs(str,fp);//第一个参数可以为要写入的字符串、字符数组名、字符型指针或字符串常量
同字符存取函数 fgets()是将文件中的字符串读取到程序当中来
而fputs()函数把程序中定义的字符串写到文件中去
int rollnumber; char name[20]; int score; FILE *fp=fopen("......","r"); while(!feof(fp)) { fscanf(fp,"%d%s%d",&rollnumber,name,&score);//将文件中数据 按此种输入方式格式化 并赋值给这三个变量 } fclose(fp);
int rollnumber="123456789"char name[20]="Jack";int score=99;fp=fopen("......","a");fprintf(fp,"%d%s%d",rollnumber,name,score);//将数据输出到文件中
rewind(fp);//将fp重新指向文件开头
feof(fp);//检测指针是否到了文件末尾 如到文件末尾则返回true
FILE *fp=fopen("......","r");fseek(fp,5,1);while(!feof(fp)){ .......}fclose(fp);
fseek(fp,offset,start);
fp为文件指针 offset 为对于起始点的偏移量 start 为起始点 共有三种状态 0 表示文件开始 1 表示当前位置 2 表示文件末尾
fseek一般用于二进制文件 因为文本文件要发生字符转换,计算位置时往往会发生混乱
fp=fopen("......","rb+");char str[50];fread(str,sizeof(char),25,fp);.......fclose(fp);
fp=fopen("......","wb+");char str[50]="abcdefg";fwrite(str,sizeof(char),7,fp);........fclose(fp);
fread(buffer, size, count, fp);
fwrite(buffer, size, count, fp);
如果是fread中的buffer 则为数据的存放地址 若为 fwrite中的buffer则为所要输出的数据的地址
size:表示每个数据的大小 count:表示有多少个数据 fp:即为文件指针
与C语言不同,C++是通过实例化类对象与文件产生联系,进而对文件进行操作
ifstream 可读的文件类
ofstream 可写的文件类
fstream 可读可写的文件类
ofstream file;file.open("......",ios::out|ios::app|ios::binary,0);
ofstream file(".......",ios::out||ios::app||ios::binary);
open() 第二个参数为文件的打开模式
ios::in 以读的形式打开文件,为ifstream/fstream open()函数的默认参数
ios::out 以写的形式打开文件,为ofstream/fstream open()函数的默认参数
ios::ate 打开的初始位置为文件末尾
ios::trunc 如果文件存在则删了重建 , 为ofstream open()函数的默认参数
ios::binary 打开二进制文件
open() 第三个参数为所打开文件的属性
0 :普通文件
1:只读文件 2:隐含文件 4:系统文件
ofstream file("......");flie.is_open();//该函数返回为一个bool值
ifstream file;file.open(".......",ios::in);.......file.close();
向文件中写入
ofstream file("......");file<<"hello world";file.close();
从文件中输入
ifstream file(".......");string str;file>>str;file.close();
向文件中写入
ofstream file("......",ios::out||ios::app||ios::binary);file.put('字符');//向文件中写入一个字符..........
从文件中读取字符
ifstream file("......",ios::binary||ios::in);char ch;string str;file.get(ch);//从文件中读取一个文件并赋值给ch;file.get(str,128,'\0');//从文件中读取128个字符并赋值给字符串str 遇到'\0'终止..........
输出数据块
char *str="hello world";ofstream file("......");file.write(str,256);//从str中读取256个字符写到文件中.........
输入数据块
char *str;ifstream file(".......");file.read(str,256);//从文件中读取256个字符到str中
已定义file
fstream file("........");
flie.eof()//到达文件末尾返回非0
file.seekg(offset,origin);//设置读(指针)位置 offset为从初始位置向后的偏移距离 orgin为初始位置 file.seekp(offset,origin);//设置写(指针)位置,其余同上
ios::beg :文件开头
ios::cur :文件当前位置
ios::end :文件结尾
转载地址:http://vllx.baihongyu.com/