当前位置:网站首页>你真的能区别putc()函数和fputc()函数的意义吗?

你真的能区别putc()函数和fputc()函数的意义吗?

2020-12-08 09:58:43 osc_ov4ok6s2

最近小编在讲关于C语言文件部分内容,讲到了fputc()函数。前面在讲字符串的时候,我们还学习过putc()函数,我们知道,putc()函数一般用于标准输出,fputc()函数一般用于文件读写。刚才呢,有一个童鞋在单字符写文件时,调用了putc()函数,另一个童鞋看到了就说必须要调用fputc()函数,为此,两个童鞋争论起来。那么真相是什么呢?

在这里呢,小编就对比着讲解一下这两个函数,看到底能不能调用putc()函数写入单个字符到文件中。

第1点 putc()函数
putc()函数是stdio.h标准库中的函数,用于将一个字符输出到指定流中,函数声明是这样的。

int putc(int ch, FILE * fp);

它有两个参数,ch参数呢表示一个字符;fp参数呢表示一个文件指针,也就是输出流,可以是文件输出流也可以是标准输出流,如果是文件输出流,fp就是一个文件指针,将字符ch写入到文件中,如果是标准输出流,fp就是stdout,将字符ch输出到控制台。

putc()函数的返回值是一个int类型的数据,它将输出的字符以整型数据的形式返回,即返回输出字符的ASCII码值。

举个“栗子”:

//定义文件指针fp,指向文件a.txt

FILE* fp = fopen("a.txt","w");

//将字符a写入文件a.txt中

int num = putc('a',fp);

//将字符b输出到控制台

int ret = putc('b',stdout);

printf("num = %d\nret = %d\n", num, ret);

在上面几行代码中,第一次调用putc()函数将字符‘a’写入到了文件a.txt,返回值赋值给num;第二次调用putc()函数,将字符‘b’输出到控制台,返回值赋值给ret。调用printf()函数输出num与ret的值,分别为97、98。

第2点 fputc()函数
fputc()函数比putc()函数多了一个字符‘f’,这个字符‘f’表示file的意思,表明fputc()函数是专用于文件操作的,它的函数声明如下所示。

int fputc(int ch, FILE * stream);

fputc()函数的参数个数、参数含义及返回值与putc()函数完全相同,因此,虽然表面上fputc()函数专用于文件操作,但它其实也可以用于标准输出。

fputc()函数的功能用法和putc()函数功能及用法完全相同。读者可以将上面代码中的putc()函数替换为fputc()函数,其运行结果完全相同。

可不可以,试一试就知道。

所以,在向文件写入单个字符时,两个函数都可以使用,如果要强行说哪个更好的话,我推荐使用fputc()函数,因为它加了一个‘f’呀,一看就知道是文件(file),不晕不花不糊涂。关于putc()函数与fputc()函数呢,今天我们就讲到这里,如果想进行更深入的学习,请关注黑马程序员教程参与更多互动。

版权声明
本文为[osc_ov4ok6s2]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4381476/blog/4780547