库函数fgetc、getc与fputc、putc的功能与区别

目录

一. 函数功能

1.1 fgetc与getc的功能

1.2 fputc与putc的功能

二. 区别


一. 函数功能

1.1 fgetc与getc的功能

这两个函数的功能都是从指定的流中获取字符。

fgetc函数原型:int fgetc(FILE *stream)

getc函数原型: int getc(FILE *stream)

使用方法演示代码:

int main()
{
	FILE* pf = fopen("text.txt", "r");  //以只读的方式打开文件,文件中存储abcdef
	if (NULL == pf)  //检验是否打开成功
	{
		perror("fopen");
		return 1;
	}

	char c1 = fgetc(pf); //使用fgetc函数读取字符,pf发生偏移
	char c2 = getc(pf); //用getc函数读取字符,pf再次发生偏移

	printf("c1 = %c, c2 = %c\n", c1, c2); //c1 = a, c2 = b

	fclose(pf);
	pf = NULL;

	return 0;
}

1.2 fputc与putc的功能

这两个函数的功能都是将指定的字符输入到指定的流中

fputc函数原型:int fputc(int c, FILE *stream)

putc函数原型:int putc(int c, FILE *stream)

其中c表示指定的字符对应的ASCII吗值,stream表示指定的流

使用方法演示代码:

#include<stdio.h>

int main()
{
	FILE* pf = fopen("text.txt", "w"); //以写的方式打开文件
	if (NULL == pf)
	{
		perror("fopen");
		return 1;
	}

	char c1 = 'a';
	char c2 = 'b';

	fputc(c1, pf); //将字符a写入文件
	putc(c2, pf); //将字符b写入文件

	fclose(pf);
	pf = NULL;

	return 0;
}

二. 区别

从表面上看,fgetc和getc的功能相同,fputc和putc的功能相同,那他们的区别在哪里呢?

注意:fgetc和fputc本质上函数,而getc和putc本质上是宏!

更细的区别有以下三个:

  1. 调用宏(getc、putc)时,宏的参数不能是有副作用的表达式。有副作用的表达式,指的是表达式执行后,会改变表达式中某些变量的值,如++i。
  2. 函数可以获取其地址,并将其赋值给函数指针,而宏不可以获取地址。
  3. 调用宏的效率要高于调用函数。
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值