文件操作相关函数

文件读写

本文主要介绍C/C++语言的文件操作相关知识点。

基本概念:C

文件系统功能是操作系统的重要功能和组成部分。在操作系统中,文件是指保存在外部介质的一个有序数据集,例如源文件、目标程序文件、可执行程序,或待输入的原始数据或输出的结果数据。一般把源文件、目标文件和可执行程序称为程序文件,输入/输出数据称为数据文件。为了提高数据存取访问的速度,C程序对文件的处理采用缓冲文件系统的方式进行,即程序与文件的数据交换通过缓冲区进行。文件系统分为缓冲文件系统非缓冲文件系统。缓冲文件系统由操作系统自动完成,非缓冲文件系统有程序控制。写文件:首先把数据写入文件缓冲区,当写满内存缓冲单元(如512B),操作系统自动把全部数据写入磁盘的一个扇区,然后清空文件缓冲区,新的数据继续写入到文件缓冲区。读文件:系统首先自动把一个扇区的数据导入文件缓冲区,供C程序逐个读入数据,一旦内存缓冲单元的数据被全部读入,系统自动把下一个扇区的数据导入文件缓冲区,供C程序继续读入新的数据。

相关操作函数:

1.头文件:#include<stdio.h>

2.打开文件:fopen("文件名","文件打开方式");//文本文件:只读"r"、只写"w"、追加"a"、读写"r+"、新建读写"w+"、打开读写追加"a+"

示例:

FILE* fp;
fp = fopen("abc.txt","r");//或者
FILE* fp = fopen("abc.txt","r");

3.关闭文件:fclose(文件指针);

4.字符读写函数:fputc(char ch, FILE* fp);//写字符char ch = fgetc(FILE* fp);//读入字符

5.字符串读写函数:fputs(s,fp);//写字符串,s:字符串,fp:文件指针fgets(s,n,fp);//读入字符串,s:字符串,n:读入的字符个数,fp:文件指针

6.格式化文件读写函数:fscanf(文件指针,格式字符串,输入表);fprintf(文件指针,格式字符串,输出表);

示例:
FILE* fp;
int n;
float x;
fp = fopen("a.txt","r");
fscanf(fp,"%d%f",&n,&x);
fprintf(fp,"%d%f",n,x);
6.其他函数:feof(fp);//判断文件的末尾标志

完整示例:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    FILE *fp;//定义文件指针 
    char ch = 'f';
    char chs[] = "File";
    char strout[5];
    if((fp=fopen("chsFile.txt","w")) == NULL)//写方式打开文件 ,并判断是否正确打开 
    {
        printf("File open error!\n");
        exit(0);
    }
//    ch = getchar();
    fputc(ch,fp);//写字符到文件fp
    fclose(fp);//关闭文件 
    
    if((fp=fopen("chsFile.txt","a+")) == NULL)//写方式打开文件 ,并判断是否正确打开 
    {
        printf("File open error!\n");
        exit(0);
    }
	fputs(chs,fp);//写字符串到文件fp
    fclose(fp);//关闭文件 
    if((fp=fopen("chsFile.txt","r")) == NULL)//读方式打开文件 ,并判断是否正确打开 
    {
        printf("File open error!\n");
        exit(0);
    }
	while(fgets(strout,5,fp) != NULL)//读入字符串 
	{
		printf("%s",strout);
	}
	puts(chs);//显示到屏幕 
	fclose(fp);
	
	return 0;
}

基本概念:C++

头文件:

#include<ofstream>//文件写操作

#include<ifsrtream>//文件读操作

#include<fstream>//文件读写操作

写入文件:

1.创建一个ofstream对象来管理输出流;

2.将该对象与特定的文件关联起来;

3.使用类似cout的<<插入运算符实现写操作。

读文件:

1.创建一个ifstream对象来管理输入流;

2.将该对象与特定的文件关联起来;

3.使用类似cin的>>方式读取数据。

关闭文件:当输入/输出流对象过期时,到文件的连接自动关闭;也可以调用函数close()显示关闭

is_open():检查文件是否被打开的新的C++方法

fstream fin;
if(!fin.is_open())
{
    cout<<"error! open file!!"<<endl;
}

文件模式:

ios_base::in 打开文件,读操作

ios_base::out  打开文件,写操作

ios_base::app  打开文件,追加写操作

ios_base::ate  打开文件,移到文件尾

完整示例:

#include<iostream>
#include<fstream>
#include<string>

using namespace std;

int main()
{
	string filename = "HiFile.txt";
	string fileContents[5] = {"Hello","Mr.","Fan","How are you?"};
	ofstream fout(filename,ios_base::out);
	if(fout.is_open())
	{
		for(int i=0;i<10;i++)
		{
			fout<<fileContents[i]<<"\n";
		}
		fout.close();
	}
	
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值