c语言-文件函数

1、文件的打开:fopen()

用法:fopen("文件位置","打开方式");

"r":以只读方式打开文本文件

"r+":以读写方式打开文本文件

"rb":以只读方式打开二进制文件

"rb+":以读写方式打开二进制文件

"w":以写的方式新建文本文件(会覆盖同名文件)

"w+":以读写方式新建文本文件(会覆盖同名文件)

"wb":以写的方式新建二进制文件(会覆盖同名文件)

"wb+":以读写方式新建二进制文件(会覆盖同名文件)

"a":以"尾部追加"写的方式打开文本文件

"a+":以"尾部追加"读写的方式打开文本文件

"ab":以"尾部追加"写的方式打开二进制文件

"ab+":以"尾部追加"读写的方式打开二进制文件

具体用法:假设要以只读方式打开D盘a目录下的file.txt文件

#include<stdio.h>

int mian(){
    FILE * p;
    p = fopen("D:\\a\\file.txt","r");

    return 0;
}

指针p就会指向这个文件的内容。

2、文件的关闭:fclose()

用来把打开的文件关闭,当进行写操作后,会将所写内容存入缓冲区,关闭文件或者程序运行结束后才会写入文件中。

具体用法:

#incldue<stdio.h>

int mian(){
    FILE * p;
    p = fopen("D:\\a\\file.txt","r");//打开文件
    fclose(p);//关闭文件

    return 0;
}

3、fgetc():从文件读取一个字符

具体用法:

#include<stdio.h>

int mian(){
    FILE * p;
    p = fopen("D:\\a\\file.txt","r");//打开文件
    fgetc(p);
    fclose(p);//关闭文件

    return 0;
}

执行后就会从文件中读取一个文件指针所指的字符,如果想要连续读取可以用一个循环,如果读取不到字符,fgetc()函数返回值为EOF。

4、fputc():在文件中写入一个字符

此函数中有两个参数,具体用法如下:
 

#include<stdio.h>

int mian(){
    FILE * p;
    char a = 'A';

    p = fopen("D:\\a\\file.txt","w");//打开文件
    fputc(a,p);
    fclose(p);//关闭文件

    return 0;
}

此时就会将字符'A'存入新建文件file.txt中。

5、fgets():从文件中读取一行(遇回车结束)

此函数有三个参数:fgets(内容,长度,输入设备);

注意:最多读取长度-1个字符。

例:将文件a.txt打印到屏幕

#include<stdio.h>

int main(){
    FILE *f;
	char a[128];//存储从文件中读取到的字符串
	
	f = fopen("t7.c","r");
        
    while(fgets(a,sizeof(a),f)){  //当读不到东西时,返回值为0,跳出循环
		printf("%s",f);
	}

    return 0;
}

读取失败时,fgets()函数返回值为NULL。

6、fputs():写一行到文件中

此函数有两个参数:fputs(内容,输出设备)

例:将文件a.txt的内容复制到新建文件b.txt中

int main(){

	FILE * f1;
	FILE * f2;
	char a[128];

	//打开文件
	f1 = fopen("a.txt","r");
	f2 = fopen("b.txt","w");

	//读取a.txt中的一行并存入b.txt中
	while(fgets(a,sizeof(a),f1)){
		fputs(a,f2);
	}
	
    //关闭文件
	fclose(f1);
	fclose(f2);
	
	return 0;
}

7、fprintf():往文件中写入格式化数据

例:往新建文件a.txt中存入字符串

#include<stdio.h>

int main(){
    char a[] = hello world!;
    FILE * f;

	//打开文件
	f = fopen("a.txt","w");
    
    fprintf(f,"%s",a);

    //关闭文件
    fclose(f);
    
    return 0;
}

8、fscanf():格式化读取文件中的数据

例:假设文件a.txt中内容如下:

那么如果想只读取姓名和成绩,就需要格式化的输入:

#include<stdio.h>

int main(void){
	FILE * f;
	char name[64];
	int gra;

	//打开文件
	f = fopen("a.txt", "r");
	if(!f){
		printf("打开文件失败!\n");
		return 1;
	}
	
	//格式化输入并打印到屏幕
	while(fscanf(f,"姓名:%s 成绩:%d\n",name,&gra) != EOF){
		printf("%s %d\n",name,gra);
	}
	return 0;
}

 结果:

韩跑跑 90

秦拆拆 10

读取成功时,返回读取的数据个数;读取失败时返回EOF。

9、fwrite():以二进制形式往文件中写入数据

此函数有四个参数:fwrite(数据起始地址,一个数据所占大小,要写入的数据个数,文件指针)

例如,要把整形数组a[10]={10,20}写入文件b.txt,文件指针为f,整形为4字节,总共要存两个整形,所以就可以fwrite(a,4,2,f),具体代码如下:

#include<stdio.h>

int main(){
	int a[64] = {10,20};
	FILE * f;
	
	f = fopen("b.txt","wb");

	fwrite(a,4,2,f);
	
	fclose(f);
	
	return 0;
}

10、fread():以二进制形式从文件中读取数据

与fwrite相对应,fread也有四个参数:fread(要存入的数据起始地址,一个数据所占大小,要读取的数据个数,文件指针)

具体用法如下:

#include<stdio.h>

int main(){
	int a[64];
	FILE * f;
	
	f = fopen("b.txt","rb");

	fread(a,4,2,f);
	
	fclose(f);
    
    printf("%d\n",a[0]);
	printf("%d\n",a[1]);
	
	return 0;
}

虽然以二进制写入文件之后打开的文件是乱码,但是读出后又会变成写入时的数据

结果:

10

20

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值