linux下的标准I/O的fgetc()与fputc()函数详细介绍及代码演示

文章目录

  • 前言
  • 一、fgetc()用法介绍
  • 二、fputc()用法介绍
  • 代码演示
  • 总结

前言


在C语言中,读写文件比较灵活,既可以每次读写一个字符,也可以读写一个字符串,甚至是任意字节的数据(数据块)。本节介绍以字符形式读写文件。
以字符形式读写文件时,每次可以从文件中读取一个字符,或者向文件中写入一个字符。主要使用两个函数,分别是fgetc()和 fputc()。

一、fgetc()用法介绍

fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。fgetc() 的用法为:
int fgetc (FILE *fp);
fp 为文件指针。fgetc() 读取成功时返回读取到的字符,读取到文件末尾或读取失败时返回EOF。
EOF 是 end of file 的缩写,表示文件末尾,是在 stdio.h 中定义的宏,它的值是一个负数,往往是 -1。fgetc() 的返回值类型之所以为 int,就是为了容纳这个负数(char不能是负数)。
EOF 不绝对是 -1,也可以是其他负数,这要看编译器的实现。

fgetc() 的用法举例:
char ch;
FILE *fp = fopen("temp", "r");
ch = fgetc(fp);
表示从temp文件中读取一个字符,并保存到变量 ch 中。

在文件内部有一个位置指针,用来指向当前读写到的位置,也就是读写到第几个字节。在文件打开时,该指针总是指向文件的第一个字节。使用 fgetc() 函数后,该指针会向后移动一个字节,所以可以连续多次使用 fgetc() 读取多个字符。
注意:这个文件内部的位置指针与C语言中的指针不是一回事。位置指针仅仅是一个标志,表示文件读写到的位置,也就是读写到第几个字节,它不表示地址。文件每读写一次,位置指针就会移动一次,它不需要你在程序中定义和赋值,而是由系统自动设置,对用户是隐藏的。
也就是说fgetc()的功能就是是从文件中逐个读取字符,直到读取完毕。

二、fputc()用法介绍

fputc 是 file output char 的所以,意思是向指定的文件中写入一个字符。fputc() 的用法为:

int fputc ( int ch, FILE *fp );

ch 为要写入的字符,fp 为文件指针。fputc() 写入成功时返回写入的字符,失败时返回 EOF,返回值类型为 int 也是为了容纳这个负数。例如:

fputc('a', fp);
或者:
char ch = 'a';
fputc(ch, fp);
表示把字符 'a' 写入fp所指向的文件中。

两点说明

  1. 被写入的文件可以用写、读写、追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,并将写入的字符放在文件开头。如需保留原有文件内容,并把写入的字符放在文件末尾,就必须以追加方式打开文件。不管以何种方式打开,被写入的文件若不存在时则创建该文件。
  2. 每写入一个字符,文件内部位置指针向后移动一个字节。

代码演示

代码功能,通过fgetc和fputc函数将temp文件的内容拷贝到test文件中
创建fgetc.c文件 代码如下 :
int main(int argc ,char ** argv)//命令行传参 第一个参数表示命令行传递参数个数 第二个参数保存命令行传递的参数
{int ch;FILE *pr=NULL;FILE *ps=NULL;pr = fopen(argv[1],"r");//只读格式打开temp文件,无文件则报错ps = fopen(argv[2],"w");//打开test文件只写,无文件则创建if(pr==NULL)//打开 文件失败{perror("fopen()");exit(1);}while(1){ch= fgetc(pr);if(ch==EOF)//EOF 本来表示文件末尾,意味着读取结束break;//到文件末尾则退出while循环 fputc(ch,ps);//向终端中打印出文件内容}fclose(ps);//关闭所打开的两个文件fclose(pr);exit(0);
}

我们通过命令行传递参数 将temp文件和test文件名传入到函数中
我们在linux终端需要先编译我们创建的fgetc.c文件并输入如下指令执行程序

./fgetc temp test

然后分别查看temp文件和test文件中的内容


我们可以看到文件已拷贝成功

总结

本次程序很简单,如果仍需运行代码,可在代码区自取

linux下的fgetc()与fputc()函数详细介绍及代码演示相关推荐

  1. c++ zlib加密压缩文件详细介绍与代码演示

    目录 一.下载编译zlib 编译方式1:命令行形式编译 编译方式2:批处理文件形式编译 编译方式3:源码形式编译

  2. php 运营商授权,PHP判断手机号运营商(详细介绍附代码)

    道理很简单,知道手机号规则 进行正则判断就可以 移动:134.135.136.137.138.139.150.151.157(TD).158.159.187.188 联通:130.131.132.15 ...

  3. c语言fputc输入字符串,C语言fgetc和fputc函数用法详解(以字符形式读写文件)

    C语言fgetc和fputc函数用法详解(以字符形式读写文件),文件,字符,指针,函数,字节 C语言fgetc和fputc函数用法详解(以字符形式读写文件) 易采站长站,站长之家为您整理了C语言fge ...

  4. linux拷贝文件函数,linux下文件操作的各个函数

    作者:HoytEmail:hoytluo@21cn.com 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 --------- ...

  5. linux的gets函数,Linux 下使用C语言 gets()函数报错

    在Linux下,使用 gets(cmd) 函数报错:warning: the 'gets' function is dangerous and should not be used. 解决办法:采用 ...

  6. linux awk 内置函数详细介绍(实例)

    原文地址为: linux awk 内置函数详细介绍(实例) 这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中 ...

  7. 文件操作:fgetc与fputc函数的使用

    在成功打开文件后,我们便可以对文件进行操作,以下是字符输入函数fgetc和字符输出函数fputc的简单使用说明. 如果还不知道如何打开文件的可以看看我的另一篇文章. 点我 fputc函数的使用 当我们 ...

  8. 计算机科学类专升本复习之“C语言fgetc和fputc函数用法”详解(初稿)

    C语言fgetc和fputc函数用法详解(以字符形式读写文件) 在C语言中,"读写"文件比较灵活,既可以每次"读写一个字符",也可以"读写一个字符串& ...

  9. 【dubbo-2.5.x】Linux下dubbo-admin监控/管理平台部署详细教程

    前言 Dubbo-Admin是Dubbo控制台管理的工具,是Dubbo组件之一,需要Dubbo-Admin管理平台来实时对服务调用情况进行调整,比如控制分布式服务的调用权重等,通过调整调整调用权重来控 ...

最新文章

  1. Python控制结构总结
  2. mysql pt_mysql之pt工具之pt-fifo-split用法介绍
  3. JAVA实验报告九异常处理_JAVA实验报告_Java异常处理
  4. .NET截取指定长度汉字超出部分以...代替
  5. int类型和byte类型的强制类型转换
  6. Vue 组件 mixins
  7. 一群喵星人把他家包围了。。
  8. Android系统启动过程
  9. Application page and Site page
  10. unigui web app之title buttons
  11. 旧电脑 软路由 openwrt 自定义安装ipk 操作记录
  12. Apache HTTP Server 下载,安装,配置,启动手把手教你
  13. android 竖屏优先,android 强制设置横屏 判断是横屏还是竖屏
  14. 从安卓/linux固件反编译出dtb和dts
  15. 史上最全的工业相机CCD/CMOS靶面尺寸规格说明
  16. 从京东产品学搭建SaaS架构
  17. 微信小程序--数据列表
  18. 【MySQL】插入语句汇总
  19. vue的两个核心点分别是什么?
  20. 计算机毕业设计 SSM+Vue宠物管理系统 宠物商城 宠物用品购物平台 宠物领养救助系统 Java Vue MySQL数据库 远程调试 代码讲解

热门文章

  1. 关于如何下载E都市三维地图的教程
  2. 大众点评开源分布式监控平台 CAT 深度剖析
  3. 把数字翻译成字符串python_把数字翻译成字符串
  4. linux退出guest用户_linux中guest 用户就是nobody吗?
  5. C语言求毕达哥拉斯亲密数
  6. 【Kotlin】Android-使用WebDAV协议云存储文件(详细)—附demo源码
  7. JavaSE 第三章 流程控制语句方法定义 笔记
  8. 【JavaSE】02-变量、数据类型和运算符
  9. 中秋佳节,实现一个自定义任意路径嫦娥奔月程序:过什么节,代码走起
  10. 机器学习_深度学习毕设题目汇总——视网膜