最近小编在讲关于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()函数呢,今天我们就讲到这里,如果想进行更深入的学习,请关注黑马程序员教程参与更多互动。

你真的能分清putc()函数和fputc()函数吗?的更多相关文章

  1. 你真的会玩SQL吗?实用函数方法汇总

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  2. 【Go入门教程3】流程(if、goto、for、switch)和函数(多个返回值、变参、传值与传指针、defer、函数作为值/类型、Panic和Recover、main函数和init函数、import)

    这小节我们要介绍Go里面的流程控制以及函数操作. 流程控制 流程控制在编程语言中是最伟大的发明了,因为有了它,你可以通过很简单的流程描述来表达很复杂的逻辑.Go中流程控制分三大类:条件判断,循环控制和 ...

  3. python函数基础以及函数参数简解

    python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...

  4. C语言函数名与函数指针详解

    一.通常的函数调用 一个通常的函数调用的例子: /* 自行包含头文件 */ void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */ int main(in ...

  5. JS中的普通函数和箭头函数

    最近被问到了一个问题: >javaScript 中的箭头函数 (=>) 和普通函数 (function) 有什么区别? 我当时想的就是:这个问题很简单啊~(flag),然后做出了错误的回答 ...

  6. python——内置函数和匿名函数

    内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这 ...

  7. 『审慎』.Net4.6 Task 异步函数 比 同步函数 慢5倍 踩坑经历

    异步Task简单介绍 本标题有点 哗众取宠,各位都别介意(不排除个人技术能力问题) —— 接下来:我将会用一个小Demo 把 本文思想阐述清楚. .Net 4.0 就有了 Task 函数 —— 异步编 ...

  8. python内置函数,匿名函数

    一.匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...

  9. STM32 printf()函数和scanf()函数重定向到串口

    STM32 printf()函数和scanf()函数重定向到串口 printf()函数和scanf()函数重定向 在学习STM32的时候,常常需要用串口来测试代码的正确与否,这时候就要要用到print ...

随机推荐

  1. Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!

    GitHub 17k Star 的Java工程师成神之路,不来了解一下吗! GitHub 17k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 17k Star 的Java工 ...

  2. js函数工具总结

    小写字母转大写 var UP = function(s){ return s.toUpperCase().split(' ').join('_') } UP('Hedge number') 将格式为 ...

  3. linux-mint18 (ubuntu 16) 安装python3

    直接执行命令: sudo apt-get install python3 将python3设置为默python版本: sudo update-alternatives --install /usr/b ...

  4. sql优化整理(二)

    对于连接查询,EXPLAIN的extra字段出现using join buffer,表示使用了连接缓存,保证JOIN语句中被驱动表上JOIN条件字段已经添加索引: LEFT JOIN 条件用于确定如何 ...

  5. PowerShell类grep

    PowerShell类grep 方法一: windows下没有grep不过有findstr, 功能差不多 方法二: powershell自带的正择功能 xxx | where {$_ -match & ...

  6. java 第一课 笔记

    java是一种解释型语言 Java提供了内存自动管理:不涉及指针:单继承. classpath:字节码文件的路径,执行java.exe时,会查找并解释*.class文件 set classpath=. ...

  7. build设计模式

    又叫生成器模式 public class MainActivity extends AppCompatActivity { TextView textView; Button button; prot ...

  8. 单片机串口通信电平不匹配的解决电路,5V 3.3V串口通讯

    很早的时候调试串口通讯遇到单片机和模块电压不匹配,信号无法传输,所以整理后来遇到的转换电路.1.最简单的用转换电平IC,可以去淘宝上搜索,有四路的有两路的,比如这个双向电平转换模块 2.根据接触的开发 ...

  9. Redis---09Redis集群(二)

    一.集群的Jedis开发: 1.导入jar包 jedis-2.8.1.jar commons-pool2-2.4.2.jar 2.代码 public class TestCluster { publi ...

  10. 【转】Getting an Image on the Screen

    FROM:http://lazyfoo.net/tutorials/SDL/02_getting_an_image_on_the_screen/index.php Getting an Image o ...