一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)



各位看官们,大家好,上一回中咱们说的是基于文件描述符进行文件操作的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们在上一回中详细地介绍了文件操作相关的系统调用。不过,没有举具体的例子。我们的主要内容就是举例子,因此,今天我们将通过具体的例子来说明如果使用系统调用来操作文件。

对文件的操作,还是使用我总结的文件操作三步曲比较好:

fd = open(file_name,flags_read);          //打开文件
fd = open(file_name,flags_create,mode);   //创建文件
res = write(fd,buf,SIZE*sizeof(char));    //向文件写入数据
res = read(fd,buf,SIZE*sizeof(char));     //从文件中读取数据
res = close(fd);                          //关闭文件

看官们,我要强调一下:文件操作很容易发生错误,因此必须检查文件操作的结果。在我们的例子代码中对每一个文件操作的结果都进行了检查。下面是一个检查的例子,请参考:

    if(-1 == res)
    {
        printf("read data failed \n");

        close(fd);
        return 1;
    }
    else
        printf("read %d chars from file,they are %s \n",res,buf);

希望大家能够从例子中明白检查文件操作结果的重要性,进而养成良好的编程习惯。

看官们,以上是核心代码,完整的代码放到了我的资源中,大家可以点击这里下载使用。

在代码中我们首先创建一个名叫test的文件,然后向该文件中写入数据,最后关闭该文件,释放与文件关联的文件描述符。接下来我们以只读的方式打开该文件,然后从文件中读取数据,并且输出到终端中,最后关闭该文件,释放与文件关联的文件描述符。

下面是程序的运行结果:

write 16 chars into file
read 16 chars from file,they are hello word 

各位看官,关于文件操作:基于文件描述符的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。

时间: 2024-11-03 21:34:19

一起talk C栗子吧( 第一百四十回:C语言实例--文件操作:基于文件描述符三)的相关文章

一起talk C栗子吧(第一百四十九回:C语言实例--socket通信三)

各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了socket通信的步骤,当时提到了实现这些步骤使用的系统调用,当时有些看官不理解这些系统调用,今天我们趁热打铁来介绍这些系统调用. int socket(int domain, int type, int protocol) 该函数用来创建一个socket; 该函数的三个参数分别对应socket的三个属性:域,类型和协议: 该函数运

一起talk C栗子吧(第一百四十四回:C语言实例--文件操作大结局)

各位看官们,大家好,上一回中咱们说的是基于文件指针进行文件操作的例子,这一回咱们说的是文件操作大结局.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在前面章回中介绍了文件操作的两种途径:文件描述符和文件指针.今天我们将对这两种文件操作途径进行总结和对比. 我们先看看它们的共同点: 1.口味相同:都喜欢吃文件(都能用来操作文件): 2.生活方式相同:日出而作,日落而息(使用它们时都是按照文件操作三步曲进行:打开,操作,关闭): 3.都不省心:使用时容易引起错误,需要检查使用后的结

一起talk C栗子吧(第一百四十五回:C语言实例--socket概述)

各位看官们,大家好,上一回中咱们说的是基于文件指针进行文件操作的例子,这一回咱们说的例子是socket概述.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们今天主要介绍socket."前面章回中还在介绍文件操作,怎么突然来说这个叫socket的东西呢?"这里有看官在问了,看官莫急,我们之所为介绍socket,是因为它有点类似文件操作中的文件描述符.说类似有点不太准确,其实socket本质上就是文件描述符.我们可以使用read,write等系统调用来操作socket.当然

一起talk C栗子吧(第一百四十三回:C语言实例--文件操作:基于文件指针三)

各位看官们,大家好,上一回中咱们说的是基于文件指针进行文件操作的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中详细地介绍了标准库中与文件操作相关的函数.不过,限于时间的原因,没有举具体的例子.还是那句老话,只说不练,不是我们的风格.因此,今天我们将通过具体的例子来说明如何使用文件指针来操作文件. 对文件的操作,还是使用我总结的文件操作三步曲比较好: p_file = fopen(file_name,"w"); //打开文件 re

一起talk C栗子吧(第十回:C语言实例--最小公倍数)

各位看官们,大家好.从今天開始,我们讲大型章回体科技小说 :C栗子.也就是C语言实例. 闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们,上一回中咱们说的是最大公约数的样例,这一回咱们说的样例是:最小公倍数. 看官们,最小公倍数和最大公约数类似. 两个整数中的公倍数有好多个,这些公约数中最小的一个就叫作 最小公倍数. 当然了.这是数学中的一个概念,假设不明确了,能够查阅相关的数学知识. 最小公倍数的求法有好几种.最经常使用的是通过最大公约数来求.由于两个数的最大公约数乘以它们的最小

一起talk C栗子吧(第二回:C语言实例--判断闰年)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C语言实例吧! 看官们,上一回中咱们给小说做了个开头,这一回咱们正式说C例子,这回说的例子是:判断闰年. 看官们,闰年是什么?这个是地理天文方面的概念.如果不明白的话,自己百度去,哈哈.我也偷一把懒. 看官们,判断闰年的方法有两种: 如果某年能被4整除,但是不能被100整除,那么这一年就是闰年. 如果某年能被400整除,那么这一年就是闰年. 看官们看到整除肯定想到除法了

一起talk C栗子吧(第一百四十八回:C语言实例--socket通信二)

各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了套接字的通信步骤,限于时间的原因, 我们只介绍了流套接字的通信步骤.这一回中我们将介绍数据报套接字的通信步骤. 下面是客户端和服务器端实现通信的详细步骤: 客户端实现通信的步骤: 1.创建客户端套接字(socket): 2.设置客户端套接字的属性:域,类型和协议: 3.通过操作客户端套接字来实现客户端与服务器的通信(sendto,r

一起talk C栗子吧(第一百四十六回:C语言实例--socket属性)

各位看官们,大家好,上一回中咱们说的是socket概述的例子,这一回咱们说的例子是socket属性.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一 回中对socket做了基本的介绍,这一回我们主要是介绍socket的属性. socket主要有三个属性: 域(domain) 类型(type) 协议(protocol) 域表示socket的通信范围.比如,我们通过互联网通信时使用的域为AF_INET(表示IPv4,与现在使用的IPv6对应的域是AF_INET6),我们在本地通

一起talk C栗子吧(第一百四十七回:C语言实例--socket通信一)

各位看官们,大家好,上一回中咱们说的是socket属性的例子,这一回咱们说的例子是socket通信.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在前面章回中介绍了socket的基本概述,这一回中我们将介绍如何使用socket来实现两个进程之间的通信.为了方便大家理解socket通信的方式,我们把通信的双方分别称作客户端和服务器端.大家都知道,套接字有两种类型:流套接字和数据报套接字.不同类型的套接字,通信的方式也不同,本章回中我们先介绍流套接字的通信方式,数据报套接字的通信方