c语言中文件顺序读写的函数

目录

fgetc函数(适用于所有流)

fgetc函数的作用

fgetc函数的返回值和参数

fputc函数(适用于所有流)

 fputc函数的作用

fputc函数的返回值和参数

fgets函数(适用于所有流)

 fgets函数的作用

fgets函数的返回值和参数

fputs函数(适用于所有流)

 fputs函数的作用

fputs函数的返回值和参数

fwrite函数(只是适用于文件)

 fwrite函数的作用

 fwrite函数的返回值和参数

fread函数(只是适用于文件)

 fread函数的作用

fread函数的返回值和参数


以下函数的头文件都是<stdio.h>

fgetc函数(适用于所有流)

fgetc函数的作用

从一个流或者stdin流中读取一个字符

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "r");	//打开一个文件指针,以r(可读取)的方式打开data.txt这个文件,使用的是相对路径
	if (fp != NULL)	//判断是否开辟成功
	{
		printf("%c", fgetc(fp));    //从文件中读取一个字符
		fclose(fp);	//关闭程序
	}
	return 0;
}

输出的是1,因为我们之前在这个文件中存放了12345的数据,读取一个字符,就读取了1

注意:当我们使用一次这个函数后,指向这个文件的指针会自动向后偏移一位 

fgetc函数的返回值和参数

返回值:int,如果读取正确以整型返回这个字符(相当于返回字符的ASSIC码值),如果读取错误或者读到文件末尾,返回EOF,可以用feof函数判断是读取错误还是读到文件末 

参数:stream,类型FILE*,为想要从中读取数据的指针,指针类型为FILE*

fputc函数(适用于所有流)

 fputc函数的作用

往一个流或者stdout中写入一个字符

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "w");	//打开一个文件指针,以w(可写入)的方式打开data.txt这个文件,使用的是相对路径
	if (fp != NULL)	//判断是否开辟成功
	{
		printf("%c", fputc('a', fp));	//写入一个字符到文件中
		fclose(fp);	//关闭程序
	}
	return 0;
}

 

 可发现文件data.txt中有一个a,就是我们刚刚写入的

注意:当我们以可读的形式打开这个文件的时候,之前的内存将会被清空

fputc函数的返回值和参数

 
返回值:int,如果写入正确以整型返回这个字符(相当于返回字符的ASSIC码值),如果写入错误则返回EOF

参数:c,类型int,想写入的字符(以assic码值的形式传入)
stream,类型FILE*,为想要从中写入数据的指针,指针类型为FILE*

fgets函数(适用于所有流)

 fgets函数的作用

 从流中读取一个字符串

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "r");	//打开一个文件指针,以r(可读)的方式打开data.txt这个文件,使用的是相对路径
	char arr[10] = { 0 };
	if (fp != NULL)	//判断是否开辟成功
	{
		printf("%s", fgets(arr, 5, fp));	//读取一个字符串到文件中
		fclose(fp);	//关闭程序
	}
	return 0;
}

得到的结果是abcd,这是因为读取的时候,只会读取n-1个字符,n地方会自动放置了一个'\0'

 注意:
1、当文件内容少于要读写的内容时候,只会读取文件中有的内容
2、读取n个字符的时候,实际上只会读取n-1个,n地方会自动放入'\0'
3、假如读取到换行符,也会提前结束读取
4、当我们使用之后,FILE*会自动向后移动n-1个位置

fgets函数的返回值和参数

返回值:char*,返回这个字符串的首地址,如果读取错误或者读到文件末,则返回NULL,可用feof函数来进行判断是读取错误还是读到文件末

参数:string,类型char*,存储数据的地址
n,类型int,最大读取的数量
stream,类型FILE*,为想要从中写入数据的指针,指针类型为FILE*

fputs函数(适用于所有流)

 fputs函数的作用

从流中写入一个字符串 

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "w");	//打开一个文件指针,以w(可写入)的方式打开data.txt这个文件,使用的是相对路径
	char arr[10] = { 0 };
	if (fp != NULL)	//判断是否开辟成功
	{
		fputs("hello world", fp);	//写入一个字符串到文件中
		fclose(fp);	//关闭程序
	}
	return 0;
}

我们可以发现这个文件被我们写入了hello world 

注意:假如我们想换行,直接使用\n就行

fputs函数的返回值和参数

返回值:int,如果写入成功会返回非负数,如果写入失败返回EOF

参数:string,类型char*,想要输入字符串的地址
stream,类型FILE*,为想要从中写入数据的指针,指针类型为FILE*

fwrite函数(只是适用于文件)

 fwrite函数的作用

写数据到一个流中 

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "wb");	//打开一个文件指针,以wb(以二进制形式可写入)的方式打开data.txt这个文件,使用的是相对路径
	int arr[] = { 1,2,3,4,5 };
	if (fp != NULL)	//判断是否开辟成功
	{
		fwrite(arr, sizeof(arr), 1, fp);	//以二进制形式写入一个大小为sizeof(arr)的字符串到文件中
		fclose(fp);	//关闭程序
	}
	return 0;
}

当我们打开的时候就会发现看不懂,这是因为我们使用的是文本编辑器,打开二进制文件会自动转换成其他符号 ,假如我们想读取可以使用fread函数,来读取二进制文件

 fwrite函数的返回值和参数

返回值:size_t,返回实际写入了多少个字符的数量

参数:buffer,类型void*,从哪个地方写出数据的指针
size,类型size_t,读取基本单字节大小 ,单位是字节 
count,类型size_t,读取基本单元的数量
stream,类型FILE*,被写入的流

fread函数(只是适用于文件)

 fread函数的作用

从流中读数据 

#include<stdio.h>

int main()
{
	FILE* fp = fopen("data.txt", "r");	//打开一个文件指针,以rb(以二进制形式读取)的方式打开data.txt这个文件,使用的是相对路径
	int arr[] = { 1,2,3,4,5 };
	if (fp != NULL)	//判断是否开辟成功
	{
		fread(arr, sizeof(arr), 1, fp);	//以二进制形式读取一个大小为sizeof(arr)的字符串到文件中
		fclose(fp);	//关闭程序
		for (int i = 0; i < 5; i++)
		{
			printf("%d ", arr[i]);
		}
	}

	return 0;
}

之前data.txt中存储了上面fwrite写入的二进制数据,这次我们用fread将这些二进制数据读取出来

得到1,2,3,4,5,和之前写入的数据一样 

fread函数的返回值和参数

返回值:size_t,返回实际读取了多少个字符的数量

参数:buffer,类型void*,将数据读取到哪个位置的指针
size,类型size_t,读取基本单字节大小 ,单位是字节 
count,类型size_t,读取基本单元的数量
stream,类型FILE*,被读取的流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起慢慢变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值