深究C语言7.文件操作的标准函数

目录

1.fopen和fclose

二,fgetc(getc)和fputc(fputc)

三,fprintf/sprintf和fscanf

四,fread和fwrite

五,feof

六,ftell

七,fseek

 八,rewind


首先我们要知道的是,文件操作不同于普通变量和其他数据类型的操作,有特定的文件操作函数,只有特定的函数才能对其操作。接下来我们要做的就是了解一下这些特定函数的用法。

1.fopen和fclose

这两个函数是文件操作的必用函数了,一个负责打开文件一个负责关闭文件。

 fopen函数返回值是一个结构指针,所以需要定义一个文件类型的结构体指针

如果打开成功,返回一个指向文件的指针,如果失败,返回NULL;

前面的一个参数是文件名,后面一个参数就是打开方式。

 fclose函数的返回值是一个int,参数是一个文件指针。如果成功,返回0,如果关闭不成功,返回EOF(-1);

两个函数写完之后都会有一个判断语句


if ((fp = fopen("f12-2.txt", "w")) == NULL) {
		printf("File open error\n");
		exit(1);
	}




if (fclose(fp)) {
		printf("Can not close the file !");
		exit(1);
		}

二,fgetc(getc)和fputc(fputc)

 参数同样是文件指针,返回值是int类型的,强行转换来的,它的作用是将文件指针现在指向的数据输出,如果成功,返回指向的数据。如果失败,如果是因为此时正指向文件尾,就返回EOF,并且设置文件末尾指示符。如果是因为其他读取错误,也会返回EOF,但是会设置perror

 第一个参数是写进文件的字符,第二个参数是文件指针。

如果成功,返回写进去的字符,如果失败,则会返回EOF,并设置错误标识符

三,fprintf/sprintf和fscanf

 

第一个参数是文件指针,第二个参数是格式控制符,后面接变量名,

sprintf第一个参数是文件指针,后面也是格式控制符

 这二者都是格式化输出,但是fprintf是格式化输出到文件,sprintf是格式化输出到字符串

两者的运行若成功,返回写入的字符个数,若失败,返回一个负数,并且设置错误标识符

第一个参数是文件指针,后面的参数与fprintf函数类似 

如果成功,返回读出数据的个数,如果失败,返回EOF,(文件为空或者读取失误)

四,fread和fwrite

 第一个参数是读出数据的存储地址,size指的是读取数据的大小,count指的是需要读多少个这样大小的数据,最后一个参数指的是文件指针

返回值是读取数据的个数,如果大小为0,则ptr指向和内容都不变。如果返回值不等于count的值,则代表读取错误,或者说遇到了EOF,即文件没有那么大。

 第一个参数指的是从哪里写进数据到文件中,最后一个参数是文件指针

返回值是count的大小,如果返回值与count大小不符,则代表返回错误或者ptr中数据没有那么多,如果返回值为0,则代表ptr中没有数据

五,feof

 功能是判断文件是否是正常结束,如果是正常结束,返回一个非0值,如果不是正常结束,返回0;

六,ftell

 返回值是一个长整型,对于二进制文件而言就是从开头到现在的偏移量,对文本文件来说这个数值可能毫无意义。如果运行失败,返回一个-1L;

七,fseek

 第一个参数是文件指针,第二个参数是在origin基础上的偏移量,第三个参数就是文件指针的指向

如果成功,返回0;否则返回非0值。

 

 八,rewind

将文件指针移动到开头的地方 

如果你能够将上面的函数弄的很清楚,再将我前面的一篇博文弄懂的话,文件这一章节对你而言就很简单了。深究C语言6.文件操作_喜欢吃豆的博客-CSDN博客icon-default.png?t=LA92https://blog.csdn.net/m0_63309778/article/details/122097609

诸君向前勿停,我们山顶相见,加油!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

炼丹上岸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值