八、文 件

一、C文件的基础知识

(一)文件概念:

在这里插入图片描述

(二)文件分类:

在这里插入图片描述

1.数据文件的分类:

在这里插入图片描述

1.1.磁盘文件的分类:

在这里插入图片描述

(三)文件指针:

1.概念:

在这里插入图片描述

2.文件指针的结构体:

在这里插入图片描述

3.文件指针的说明:

在这里插入图片描述

3.1.stdout标准输出流的使用:
printf("hello world!\n");
fclose(stdout);//关闭标准输出流
printf("hell FIFE!");//不进行打印

在这里插入图片描述

3.2.stdin标准输入流的使用:
int a,b;
printf("请输入变量a的值:");
scanf("%d",&a);
fclose(stdin);
printf("请输入变量b的值:");
scanf("%d",b); //用户无法给b赋值 

在这里插入图片描述

3.3.stderr标准出错的使用:
perror("error!");//perror():打印错误信息
fclose(stdout);
printf("hello world!");
perror("error!"); 

在这里插入图片描述

(四)文件操作流程:

在这里插入图片描述

二、打开与关闭文件

打开文件:

(一)概念:

在这里插入图片描述

在这里插入图片描述

(二)文件参数filename:

在这里插入图片描述

(三)文件参数mode参数:

在这里插入图片描述

(四)C语言示例:

1.打开文件:

//绝对路径打开文件,只读
//绝对路径打开文件,只读
FILE* fp;//定义文件指针,打开成功返回文件指针,失败返回NULL 

//打开文件的两种方式
fp = fopen("D:/test/2.txt","r");存在则返回文件指针,否则返回NULL
//fp = fopen("D:\\test\\2.txt","r");

if(fp == NULL){
	perror("fopen");//字符串fopen为提示信息,不是fopen()函数 
} 

在这里插入图片描述

2.mode参数使用:

2.1.r(read):
fp = fopen("D:/test/2.txt","r");//只读,文件存在则打开,不存在则报错
2.2.w(write):
fp = fopen("D:/test/2.txt","w");//w:可写,文件存在则清空,不存在则创建 
2.3.a(append):
fp = fopen("D:/test/1.txt","a");//a:追加,文件存在则光标放在文件开头,不存在则创建 

关闭文件:

(一)概念:

在这里插入图片描述
在这里插入图片描述

(二)C语言示例:

FILE* fp;

fp = fopen("D:/test/1.txt","a");
if(fp == NULL){
	perror("fopen");
}

//关闭文件
fclose(fp); 
fp = NULL;//关闭文件后,指针fp不再指向文件信息区,故而赋值null 

三、顺序读写文件

(一)按字符读写文件:

1.写文件:

1.1.概念:

在这里插入图片描述

1.2.fputc()函数写入文件:

一次写入一个字符,写入后光标移动到最后,写入的文件覆盖掉之前的文件

void file_write(){
	//1.打开文件
	FILE* fp;
	fp = fopen("D:/test/1.txt","w"); 
	if(fp == NULL){
		perror("fopen");
		return -1;
	}
	
	//2.写入文件
	fputc('a',fp);
	fputc('b',fp);

	fputc('c',stdout);//指向指针为屏幕输出指针,向屏幕输出c
	
	//3.关闭文件 
	fclose(fp);
	fp = NULL;
}
int main(){
	file_write();

	return 0;	
}
void file_write(){
	//1.打开文件
	FILE* fp;
	fp = fopen("D:/test/1.txt","w"); 
	if(fp == NULL){
		perror("fopen");
		return -1;
	}
	
	//2.写入文件
	/*fputc:一次写入一个字符,写入后光标移动到最后*/
	for(int i = 'a';i <= 'z';i++){
		fputc(i,fp);
	}
	
	//3.关闭文件 
	fclose(fp);
	fp = NULL;
}
int main(){
	file_write();

	return 0;	
}

2.读文件:

2.1.概念:

在这里插入图片描述

2.2.fgetc()函数读取文件:

一次读取一个字符

void file_read(){
	//1.打开文件
	FILE* fp;//文件指针
	fp = fopen("D:/test/1.txt","r"); 
	if(fp == NULL){
		perror("fopen");
		return -1;
	}
	
	//2.读文件
	char ch;
	while(1){
		ch = fgetc(fp);
		if(ch == -1){//-1:文件结束标志 
			break;
		}
		printf("%c ",ch);
	} 
	
	//3.关闭文件 
	fclose(fp);
	fp = NULL;
	 
}
int main(){
	file_write();
	file_read();
	return 0;	
}

注:
在这里插入图片描述在这里插入图片描述
feof(文件指针):推荐使用的文件结束函数:

void file_write(){
	//1.打开文件
	FILE* fp;
	fp = fopen("D:/test/1.txt","w"); 
	if(fp == NULL){
		perror("fopen");
		return -1;
	}
	
	//2.写入文件
	/*fputc:一次写入一个字符,写入后光标移动到最后*/
	for(int i = 'a';i <= 'z';i++){
		fputc(i,fp);
	}
	
	//3.关闭文件 
	fclose(fp);
	fp = NULL;
}

void file_read(){
	//1.打开文件
	FILE* fp;//文件指针
	fp = fopen("D:/test/1.txt","r"); 
	if(fp == NULL){
		perror("fopen");
		return -1;
	}
	
	//2.读文件
	char ch;
	while(1){
		ch = fgetc(fp);
		if(feof(fp)){//feof(文件指针):推荐使用的文件结束函数 
			break;
		}
		printf("%c ",ch);
	} 
	
	//3.关闭文件 
	fclose(fp);
	fp = NULL;
	 
}
int main(){
	file_write();
	file_read();
	return 0;	
}

如果没有进行读操作,直接调用feof()结束函数,永远返回假

3.练习:

void file_readwrite(){
	//1.打开文件
	FILE* fp;
	char filename[10];
	printf("请输入文件路径:");
	scanf("%c",filename);
	fp = fopen(filename,"w");
	if(fp == NULL){
		perror("fopen");
		return -1;
	}
	
	//2.读写文件
	char ch;//接收变量 
	ch = getchar();
	printf("请输入存储字符串(#结束):");
	ch = getchar();
	while(ch !='#'){
		fputc(ch,fp);
		putchar(ch);
		ch = getchar();//接收用户的下次输入 
	} 
	printf("\n"); 
	
	//3.关闭文件
	fclose(fp); 
	fp = NULL;
}
int main(){
	file_readwrite(); 
	return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值