Linux基础IO

本篇博客来讲述Linux中的新一模块--文件IO,我们来做简单的介绍和陈述。

在笔者之前的文章之中,已经对C语言中的文件操作做了简要介绍,我们旧事重提,再次进行一个简要的回顾。

目录

1.文件的操作

1.1打开文件

1.2向文件写入数据

1.3从文件读取数据

1.4关闭文件

1.5跳转文件读写位置

1.6总结

1.文件的操作

1.1打开文件

文件操作中,首先我们我们需要打开文件,返回文件的操作句柄,凭借着操作句柄来对文件进行相关操作。(有文件对应的句柄才可以对文件进行相应的操作)

FILE *fopen(char *pathname, const char *mode);

其中,pathname即是需要打开的文件名;mode是打开方式,不同的打开方式即代表对文件不同的操作权限。

对于打开文件方式的选项,在之前的博客中已经有详细介绍,不过为了方便读者,在此笔者再重新介绍一次:

  1. r:以只读方式打开文件;(若文件不存在会出错)

  2. w:以只写的方式打开文件;(若文件不存在会自动创建新文件,若文件已经存在则会清空文件原有内容)

  3. a:以追加写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则写入数据时总是会将新的数据追加到文件末尾)

  4. r+:以可读可写的方式打开文件;(若文件不存在就可以出错,若文件已经存在会从文件起始位置进行操作,会覆盖文件原有内容)

  5. w+:以可读可写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则会清空文件原有内容)

  6. a+:以可读和追加写的方式打开文件;(若文件不存在会创建新文件,若文件已经存在则写入数据时总是将新的数据追加文件末尾)

  7. b:以二进制形式打开文件,默认是以文本的形式打开。(在文本模式下,\n操作会被解释为\r\n,代表换行和光标移动)

值得注意的是打开方式--b,它是可以同其他打开方式组合,产生叠加的打开效果组合。

1.2向文件写入数据

打开文件后,必然伴随着对文件的一些操作,可能是读取、修改、删除和添加(增删改查)文件内容,我们先来讲述向文件中写入数据的操作。

size_t fwrite(char *data, int bsize, int nmem, FILE *fp);

其中,data是写入数据的地址,bsize是一块数据的大小,nmem是块的个数,也就是说 bsize * nmen才是真正的数据大小,fp则是目标文件的操作句柄。

1.3从文件读取数据

size_t fread(char *buf, int bsize, int nmem, FILE *fp);

fread函数用于向指定文件读取数据到指定的空间buf之中,读取数据的大小计算方式同fwrite函数。

1.4关闭文件

int fclose(FILE *fp);

关闭操作文件,释放对应资源。成功返回0。

1.5跳转文件读写位置

int fseek(FILE *fp, int offset, int whence);

其中whence是跳转位置,offset是偏移量。对于whence的跳转位置,我们有三个关键字来对其进行形容:

  • SEEK_SET -- 文件的起始位置;
  • SEEK_CUR -- 当前的读写位置;
  • SEEK_END -- 文件的末尾位置。

1.6总结

还是老方法,我们对上述接口进行一个简单的使用,来对知识点作以巩固。

Linux基础IO_第1张图片

设计一个简单程序内容,对上述函数加以使用,具体的函数使用说明和使用细节,在上述代码中的注释中笔者做了概述。

然后我们来观察上述代码的具体运行结果。

Linux基础IO_第2张图片

 

在删除原有的test.txt文件后,我们对test进行了执行,发现程序打印出了数据data的内容,打开目录发现text.txt成功创建,而且data内容也完整的写入到了文件test.txt之中。

这些功能的实现,正如我们程序中的设计。即创建文件,向文件写入数据,读取文件内容。

你可能感兴趣的:(从0开始的Linux,linux)