fgetc, fputc, feof

fgetc

从文件读取字符

需要的头文件:

#include <stdio.h>

函数原型:

 int fgetc(FILE *stream);

参数:

  • stream:文件指针
  • 返回值:成功会返回读取到的的字符;若读取文件时发生错误,或是已经读取到文件末尾,则返回EOF

fputc

向文件写入字符

需要的头文件:

#include <stdio.h>

函数原型:

int fputc(int c, FILE *stream);

参数:

  • c: 待输出的字符,也可以是字符串
  • stream: 文件指针
  • 返回值:传入的字符

feof

feof()是检测流上的文件结束符的函数,一般在文件操作,中经常使用feof()判断文件是否结束。

需要的头文件:

#include <stdio.h>

函数原型:

int feof(FILE *stream);

参数:

  • stream:文件指针
  • 返回值:如果文件结束,则返回非0值,否则返回0

实操演示

demo10.c:

若读取时不使用feof:
#include <stdio.h>
#include <string.h>

int main()
{
	FILE *fp;
	char *str = "mjmmjm";
	int size_str = strlen(str);
	int i;
	char c;

	fp = fopen("./mjm.txt","w+");

	for(i=0; i<size_str; i++){
		fputc(*str,fp);
		str++;
	}

	fseek(fp,0,SEEK_SET);

	while( (c=fgetc(fp)) != EOF ){
        	putchar(c);
    	}

	printf("\n");

	fclose(fp);

	return 0;
}
实现效果1:

成功读取!

若读取时使用feof:

即将fgetc部分的代码修改为:

while(!feof(fp)){
		c = fgetc(fp);
		printf("%c",c);
}
 实现效果2:

同样成功读取,但是在结尾多了一个乱码符号 

两种实现有差别的原因:

回顾刚刚feof的介绍:

feof()是检测流上的文件结束符的函数

所以,通过fgetc返回值来判断是否读完时,读到最后一个字符就结束了而通过feof来判断是否读完时,读到最后一个字符还没有结束,还要在读一位,读到“文件结束符”才能结束,这也使得多打印了一位,那个乱码的符号其实就是“文件结束符”!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值