首页 > 系统相关 >Linux教材第九章学习笔记——I/O库函数

Linux教材第九章学习笔记——I/O库函数

时间:2023-09-17 16:12:46浏览次数:52  
标签:fp 文件 字符 第九章 FMT FILE Linux 库函数

C语言文件操作内容复习

 cd ..   返回上级目标文件:

 

./    执行文件:

对文件内容进行修改,在vim命令行输入wq保存后返回:

 gcc编译后输入./a.out可显示出c文件运行结果:

 编译预处理:

 编译:

 汇编:

 用字符方式逐个打印hello.c;打印十六进制文件:

 

I/O库函数知识点总结

1.基本概念

库函数:就是一系列函数的集合,供编程时进行系统调用,既方便用户使用,又提高了工作效率。

I/O库函数建立在系统调用的基础上。

*系统调用函数:open(),read(),write(),lseek(),close;

*I/O库函数:fopen(),fread,fwrite(),fseek,fclose.

2.I/O库函数算法

(1)fread():在第一次调用fread()时,FILE结构体的缓冲区是空的,fread()使用保存的文件描述符fd发出一个n = read(fd, fbuffer, BLKSIZE);在随后的每次fread()调用中,它都尝试满足来自FILE结构体内部缓冲区的调用。函数模型为:

(2)fwrite():与fread相似,只是数据传输方式不同。

(3)fclose():若文件以写的方式被打开,fclose()会先关闭文件流的局部缓冲区。然后,它会发出一个close(fd)系统调用来关闭FILE结构体中的文件描述符。

 

(4)fseek():

 3.I/O库模式

fopen()中的模式参数可以指定为:“r”、“w”、“a”,分别代表读、写、追加。

每个模式字符串可包含一个+号,表示同时读写,或者在写入、追加情况下,如果文件不存在则创建文件。

“r+”:表示读/写,不会截断文件。

“w+”:表示读/写,但是会截断文件;如果文件不存在,会创建文件。

“a+”:表示通过追加进行读/写;如果文件不存在,会创建文件。

(1)字符模式I/O

int fgetc(FILE *fp):       //从fp中获取一个字符转换为整型。

int ungetc(int  c,  FILE  *fp);      //将先前由fgete()获得的字符压回流。

int fputc()(int  c,  FILE  *fp);      //将字符放入fp。

注意!:fget()返回的是整数而不是字符。这是因为它必须在文件结束时返回文件结束符。文件结束符通常是整数-1,将它与文件流中的任何字符区分开;

(2)行模式I/O

char *fgets(char  *buf,  int  size,  FILE  *fp):从fp中读取最多为一行(以\n为结尾)的字符。

int  fputs(char  *buf,  FILE  *fp):将buf中的一行写入fp中。

(3)格式化I/O

①格式化输入:(FMT=格式字符串)

scanf(char  *FMT,  &items);   //从stdin

fscanf(fp,  char  *FMT,  &items);    //从文件流

②格式化输出:

printf(char  *FMT,  items);    //到stdout

fprintf(fp,  char  *FMT,  items);    //到文件流

(4)内存中的转换函数

sscanf(buf,  FMT,  &items);    //从内存中的buf输入

sprintf(buf,  FMT,  items);    //打印到内存中的buf[  ]

4.文件流缓冲

文件流可以使用三种缓冲方案中的一种:

无缓冲:从非缓冲流中写入或读取的字符将尽快单独传输到文件或从文件中传输。

行缓冲:遇到换行符时,写入行缓冲流的字符以块的形式传输。

全缓冲:写入全缓冲流或从中读取的字符以块的形式传输。

 

向ChatGpt请求苏格拉底挑战

学习感悟

对于流,缓冲区等概念的理解还不透彻,对二进制文件的操作还不熟练,需进一步学习并实践。

标签:fp,文件,字符,第九章,FMT,FILE,Linux,库函数
From: https://www.cnblogs.com/20211115fyq/p/17708953.html

相关文章

  • 像黑客一样使用 Linux 命令行
    阅读目录前言##使用tmux复用控制台窗口##在命令行中快速移动光标##在命令行中快速删除文本##快速查看和搜索历史命令##快速引用和修饰历史命令##录制屏幕并转换为gif动画图片##总结##回到顶部前言##之前在博客园看到一篇介绍IntelliJIDEA配置的文章,它里面用......
  • Linux常用命令大全(非常全!!!)
    阅读目录:系统信息 关机(系统的关机、重启以及登出) 文件和目录文件搜索 挂载一个文件系统 磁盘空间 用户和群组 文件的权限-使用"+"设置权限,使用"-"用于取消 文件的特殊属性-使用"+"设置权限,使用"-"用于取消 打包和压缩文件 RPM包-(Fedora,......
  • Linux安装maven(详细教程)
    一、简介 Maven是意第绪语,意思是“知识的积累者”,最初是为了简化JakartaTurbine项目中的构建过程。有几个项目,每个项目都有自己的Ant构建文件,所有项目都略有不同。JAR已检入CVS。我们想要一种标准的方式来构建项目,清晰地定义项目的组成,一种简单的方式来发布项目信息,以及一......
  • 每天一个linux命令(50):crontab命令
    前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了......
  • Linux上Oracle 11g安装步骤图解
    Oracle11g安装准备工作目录Oracle11g安装准备工作Oracle11g下载地址:Oracle11g 联机文档:Oracle11gR2数据库安装硬件配置要求:Linux平台需要的软件包支持:创建Oracle用户修改内核参数修改用户限制修改用户验证选项修改用户配置文件安装目录配置修改用户bashsh......
  • 每天一个linux命令(44):top命令
    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,to......
  • 每天一个linux命令(52):ifconfig命令
    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工......
  • Linux top命令的用法详细详解
    首先介绍top中一些字段的含义: VIRT:virtualmemoryusage虚拟内存1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量RES:residentmemoryusage常驻内存1、进程当前使用的内存大小,......
  • 为什么建议大家使用 Linux 开发
    Linux能用吗?我身边还有些朋友对linux的印象似乎还停留在黑乎乎的命令行界面上。当我告诉他或者建议他使用linux时,会一脸惊讶的问我,那个怎么用(来开发或者日常使用)?Linux有图形界面桌面启动器文件管理器设置这是我使用了近两年的“国产”操作系统 deepin ,界面美......
  • 每天一个linux命令目录0
    开始详细系统的学习linux常用命令,坚持每天一个命令,所以这个系列为每天一个linux命令。学习的主要参考资料为:1.《鸟哥的linux私房菜》2.http://codingstandards.iteye.com/blog/7866533.linux命令五分钟系列 4.其他互联网资料,google,baidu等搜索引擎一.文......