目录
一.函数功能
1.1fgetc与getc的功能
1.2fputc与putc的功能
二.区别
一.函数功能
1.1fgetc与getc的功能
这两个函数的功能都是从指定的流中获取字符。
fgetc函数原型:int fgetc(FILE *stream)
getc函数原型: int getc(FILE *stream)
使用方法演示代码:
int main(){FILE* pf = fopen("text.txt", "r"); //以只读的方式打开文件,文件中存储abcdefif (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 = bfclose(pf);pf = NULL;return 0;}
1.2fputc与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本质上是宏!
更细的区别有以下三个:
调用宏(getc、putc)时,宏的参数不能是有副作用的表达式。有副作用的表达式,指的是表达式执行后,会改变表达式中某些变量的值,如++i。函数可以获取其地址,并将其赋值给函数指针,而宏不可以获取地址。调用宏的效率要高于调用函数。