c语言文件操作

          “文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫作文件名。通常情况下,使用计算机也就是在使用文件。

一般文件分为两类: 

           1.文本文件:这种文件在保存时,每个字符对应一个字 节,用于存放对应的ASCII码。

           2.二进制文件:按二进制的编码方式来保存文件内容。

                清刷缓冲区的三种办法

                          printf("hello,world    ");//1. 程序正常结束刷掉缓存区 
                          printf("hello,world\n");// 2.  \n刷掉 
                           printf("hello,world");//3.fflush
                           fflush(stdout) ;

文件基本操作

文件指针

文件指针  用于表示已打开的文件 文件指针是一个指向文件有关信息的指针,这些信息包括文件名、状态和当前 位置,它们保存在一个结构体变量中。在使用文件时需要在内存中为其分配空间, 用来存放文件的基本信息。该结构体类型是由系统定义的,C语言规定该类型为FILE 型。 

FILE *指针变量表示符     例如:       FILE *fc ;fc是一个指向FILE类型的指针变量.

文件的打开

        fopen函数用来打开一个文件,打开文件的操作就是创建一个流。fopen函数的 原型在stdio.h

        FILE *fp; fp=fopen(文件名,使用文件方式)

FILE *fc = fopen("./2.c","r");

其中,“文件名”是将要被打开文件的文件名,“使用文件方式”是指对打开 的文件要进行读还是写

 文件关闭

fclose(文件指针名);// 一定记得要关闭文件

在程序结束之前应关闭所有文件,这样做的目的是防止因为没有关闭文件而造 成的数据流失。

文件的读写

打开文件后,即可对文件进行读出或写入的操作,一般用到函数去读写文件;

fputc函数

int ret =  fgetc(fc);//只读一个字节 ,返回字节值 

把一个字符写到磁盘文件(fc所指向的是文件)中

int main(){
		FILE *fc = fopen("./2.c","r");// r是模式 r只读  
		if(fc==NULL){
			printf("no  g\n");
		} 
		printf("1\n");
		int ret =  fgetc(fc);//只读一个字节 ,返回字节值 
		 printf("%d\n",ret);
	return 0; 
}

在文件内打26个字母

	FILE *pa = fopen("./cctv.txt","w");
		if(pa==NULL){
			printf("no  g\n");
		} 
		printf("1\n");
		
		int i;
		for(i=0;i<26;i++){
			fputc(97+i,pa);
		}
		fclose(pa);// 一定记得要关闭文件

fgets函数,读取字符串

注意写和读时模式不一样:读是r   写用a+

int main(){
	//读写字符串 
	FILE *pa = fopen("./cctv.txt","r");
	if(pa==NULL){
		printf("gg");
	}
	char cd[100];
	char *pb;
	pb = "world";
	int cute = fputs(pb,pa);
	printf("%d\n",cute);
	while((strcpy (cd,fgets(cd,100,pa)))!=NULL){
			printf("%s",cd);
	}
	fclose(pa);
	return 0; 
}

 fread函数  

fread函数的一般形式如下:  fread( buffer, size, count, fp);

该函数的作用是从fp所指的文件中读入count次,每次读size字节,读入的信息存在buffer地址中。

buffer:一个指针。对fread函数来说,是所要读入的数据存放的地址。

size:要读写的字节数。

count:要读写多少个size字节的数据项。

fp:文件型指针。

例如:fread( a, 2, 3, fp); 其含义是从fp所指的文件中每次读两个字节送入实数组a中,连续读3次。

	FILE *pa = fopen("./cctv.txt","r+");
		if(pa==NULL){
			printf("no  g\n");
		} 
		char cc[27];
		char *pb;
		fread(cc,2,6,pa);//读取数据 
		int ret = fread(cc,2,6,pa);

		printf("%s\n",cc);	
		printf("%d\n",ret);
		fclose(pa); 

fwrite写文件

fwrite函数的一般形式如下 fwrite( buffer, size, count, fp);

该函数的作用是将buffer地址开始的信息输出count次,每次写size字节到fp 所指的文件中buffer:一个指针。对于fwrite函数来说,是要输出数据的地址(起始地址)

fwrite( a, 2, 3, fp); 其含义是将a数组中的信息每次输出两个字节到fp所指向的文件中,连续输出3 次。

玩一波        结构体内容写入文件中

typedef struct ss{
	char name[20];
	char sex[20];
	char  sco[20];

}SSS; 
int main(){
		
		FILE *pa = fopen("./cctv.txt","r+");
		if(pa==NULL){
			printf("no  g\n");
		} 

		SSS stu7[4]={{"黎明","1","99.5"},{"莉莉","2","99.7"},{"金","2","99.8"},{"无名","1","59.7"}};

		fwrite(stu7,sizeof(SSS),4,pa);
		rewind(pa);//光标移到前面
		SSS stu8[4];
		fread(stu8,sizeof(SSS),4,pa);
		int i;
		for(i=0;i<4;i++){
			printf("%s	%s	%s\n",stu8[i].name,stu8[i].sex,stu8[i].sco);
		}
		fclose(pa);

        return 0;
}
}

总结:绕的1.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值