C语言文件读写函数——fputc和fgetc

2024-03-13 20:38
文章标签 语言 函数 读写 fgetc fputc

本文主要是介绍C语言文件读写函数——fputc和fgetc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

原文链接:http://www.letuknowit.com/archives/96

 

了解了在C语言中如何打开文件后就可以正式进行文件的读写操作了,文件根据类型又分为ASCII文件和二进制文件,我们首先从简单的入手,先看看ASCII文件(文本文件)是如何读取的。

  ASCII文件(文本文件)中保存的是一个字符序列,只要按照顺序一个个的读出直到文件结尾,即可实现对整个文件的读取了
,写入文件也是一样的道理。

fputc函数

  fputc函数的作用就是将一个字符写入到文件中,其调用形式为:

fputc(ch,pFile);

其中ch就是要写入的字符,pFile是指向FILE结构的指针,通过fopen函数打开文件即可获取pFile。

  写入文件有可能会失败,但怎么才能知道是否正确写入到文件了呢?这时候就需要看fputc函数的返回值了,fputc函数如果成功的将字符写入到文件了,则其返回值就是写入的那个字符,如果失败,则返回EOF(End Of File的意思)。EOF是一个符号常量,在stdio.h中EOF被定义为-1,因此见到EOF把他当做-1就是了

fgetc函数

  知道fputc是做什么的了,fgetc基本也就知道了,这个就是从文件中读入一个字符的函数,其调用形式为:

ch=fgetc(pFile);

  参数pFile和fputc函数的参数一样,只不过少了一个参数ch,跑到返回值这里了。当fgetc成功从文件中读入字符后,ch就是读取到的字符,如果读取失败,则ch=EOF。

  综上可见,EOF在文件的读写操作中扮演中重要的角色,当读取的值为EOF的时候,程序就知道文件已经读完了

fputc函数和fgetc函数实例演示

  说一大堆不如直接来段程序记忆深刻,下面知蚁就做一个示例程序,读取一个文本文件的数据,然后写入到另外一个文本文件中去,我们先准备一个有内容“I likewww.letuknowit.com”的文本文件。

 

#include “stdio.h”void main(){char ch;FILE *pSrc,*pDes;pSrc = fopen(“srcfile.txt”,“r”);    //打开文件读取数据pDes = fopen(“desfile.txt”,“w”);    //打开文件写入数据if((NULL==pSrc) || (NULL==pDes)){printf(“Open file failed,can’t go on\n“);return;}ch=fgetc(pSrc);    //读取第一个字符while(EOF != ch){fputc(ch,pDes);    //写入字符ch=fgetc(pSrc);    //读取下一个字符}printf(“Successed copy srcfile to desfile\n“);fclose(pSrc); //别忘了关闭fclose(pDes); //同上}


运行程序之前,需要在程序运行目录下新建一个文本文件,内容随便写。值得一提的是,fputc函数和fgetc函数支持中文

 

 

 

 

 

 

 

这篇关于C语言文件读写函数——fputc和fgetc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/806141

相关文章

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程