嵌入式开发-----------IO操作

一、Linux下的7种文件属性

        1.普通文件  -

        2.目录文件   d

        3.符号链接文件(软链接)  l

        4.字符设备文件  c

        5.块设备文件   b

        6.管道文件  p

        7.套接字文件   s

二、IO的分类

        1.标准IO(高级磁盘IO)

        2.文件IO(低级磁盘IO)

三、标准IO流

        流:每一次放入数据,均是需要通过文件指针来进行读写指向文件

        流:(1)有源头:APP(2)有目的:缓冲区(3)持续性:不断放入数据到缓冲区

!缓冲机制!

        1.全缓冲:缓冲区被放满,程序结束,强制刷新-》会引起缓冲区的刷新

        2.行缓冲:缓冲区被放满,程序结束,强制刷新,遇到换行符--》会引起缓冲区的刷新

        3.不带缓冲:不存在缓冲区的概念--》每一次读写都是直接输出:stderr

?如何解释缓冲区被放满?

 ?程序结束引起的刷新?

 ?强制刷新?


 ------------当我们了解了缓冲区和流的相关概念和特点后,可以开始进行对文件的操作-----------------


四、标准IO操作文件

(1)打开文件

        参数1:需要打开文件的名字(可以包含路径,指针类型)

        参数2:打开文件的方式(指针类型)

        返回值:

                        打开文件成功之后的文件流指针

                         失败返回NULL

(1)打开文件:


(2)关闭文件


(3)按照字符操作文件(读写)

函数名:fgetc()    fputc

头文件:#include <stdio.h>

函数原型

int fgetc(FILE *stream);

功能:从指定的文件流中获取一个字符

参数:

     指定获取一个字符所处文件的文件流

返回值:

       成功返回获取到的字符值

       读取到文件末尾返回EOF(-1)

       操作中失败返回负数

int fputc(int c, FILE*stream);

功能:向指定的文件流中输出一个字符

参数:

     参数1:需要输出的指定字符(字符被称为单字节的整形)

     参数2:指定输出字符到的文件对应的文件流

返回值:

       成功返回刚写入的字符值

       失败返回EOF(-1)

 


(4)按照行操作文件

标志:寻找’\n’

函数: fgets   fputs

函数原型:

char * fgets(char *s, int size, FILE *stream);

参数1:

      即将存储内存空间首地址

参数2:

      存储内容空间的大小(可以sizeof()测得)

参数3:

      指定的文件流

返回值:

       成功返回存储内容空间首地址

       失败返回NULL


!fgets什么时候会返回!

情况1:第一次遇到'\n'会返回

情况2:读取到size-1就返回


(5)按照块操作文件

函数:

fread()    fwrite()

函数原型

       size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

       参数1:存储读取一块内容之后的空间地址

       参数2:块的大小---》建议给1

       参数3:块的个数---》建议给sizeof()

       参数4:要读取的文件对应的文件流

       返回值:成功代表读取的块的个数,失败返回0

       size_t fwrite(const void *ptr, size_t size, size_t nmemb,

                     FILE *stream);

       参数1:需要写入的内容的空间地址

       参数2:块的大小---》建议给1

       参数3:块的个数---》建议给sizeof()

       参数4:要写入的文件对应的文件流

       返回值:成功代表写入的块的个数,失败返回0


五、文件IO操作文件

        所需的头文件:(1)#include<sys/types.h>

                                  (2)#include<sys/stat.h>

                                  (3)#include<fcntl.h>

1.打开文件:

 int open(const char *pathname, int flags);

       功能:打开指定的文件

       参数:

             参数1:所需打开文件的名字(包含路径)

             参数2:打开文件的方式---》主标志 | 副标志

       返回值:成功代表一个大于0 的数字(文件描述符),失败返回-1(errno ie set...)

       int open(const char *pathname, int flags, mode_t mode);

       功能:打开指定的文件

       参数:

             参数1:所需打开文件的名字(包含路径)

             参数2:打开文件的方式---》主标志 | 副标志

             参数3:当需要O_CREAT时,就要写该参数来为创建的新文件指明权限(八进制表示)

       返回值:成功代表一个大于0 的数字(文件描述符),失败返回-1(errno ie set...)


 2.关闭文件:

#include <unistd.h>

       int close(int fd);

       功能:关闭一个文件描述符

       参数:打开文件成功之后的文件描述符


3.写文件

 #include <unistd.h>

       ssize_t write(int fd, const void *buf, size_t count);

       功能:向指定的文件描述符的文件内写入内容

参数:

     参数1:打开文件之后的文件描述符

     参数2:所需写入的内容所在空间首地址

     参数3:需要写入的字节数

返回值:

       成功返回写入的字节数

       返回0代表没有写入任何内容

       返回-1代表出错(errno is set...)


4.读文件

 #include <unistd.h>

        ssize_t read(int fd, void *buf, size_t count);

        功能:从指定的文件描述符的文件中读取内容

参数:

      参数1:打开文件之后的文件描述符

      参数2:存储读取到结果的空间首地址

      参数3:可以读取的字节数---》sizeof测得

返回值:

        成功返回读取的字节数

        返回0代表读取完毕

        返回-1代表出错(errno is set...)


六、操作目录

1.打开目录


2.操作目录


3.关闭目录


4.测试文件属性

 

 

 

 

 

 

        

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: platformio-core-installer-develop是一个开源的软件工具,用于安装和管理PlatformIO核心库。它是一个命令行工具,可以在不同的操作系统上使用。它的开发版本意味着它是一个正在开发和测试中的版本,可能包含一些新功能和修复。 使用platformio-core-installer-develop可以方便地安装和更新PlatformIO核心库。它提供了一个简单的命令行界面,让用户可以轻松地进行库的安装、升级和移除。用户只需使用适当的命令,工具就会自动下载和安装所需的库。 PlatformIO是一个针对嵌入式开发的开发平台。它支持多种硬件平台和开发板,如Arduino、Raspberry Pi、ESP8266等。使用PlatformIO,开发者可以方便地在不同的开发板上开发和调试自己的项目。 PlatformIO的核心是一个基于Python的框架,它提供了一系列的工具和库,用于开发和构建嵌入式应用程序。使用platformio-core-installer-develop,开发者可以方便地安装和管理这些核心库。 总之,platformio-core-installer-develop是一个开源的软件工具,用于安装和管理PlatformIO核心库。它提供了一个简单的命令行界面,使得库的安装和更新变得更加方便。使用PlatformIO,开发者可以在不同的嵌入式开发板上开发和调试他们的项目。 ### 回答2: platformio-core- installer-develop是一个开源项目,用于安装和管理PlatformIO核心的开发版本。PlatformIO是一个跨平台的开发工具链,旨在为嵌入式系统开发提供一站式解决方案。 platformio-core- installer-develop是PlatformIO核心安装器的开发版本,它提供了安装、升级和管理PlatformIO核心的功能。该项目本身也是开源的,因此用户可以自由查看、修改和贡献代码。 通过platformio-core- installer-develop,开发人员可以轻松地安装和升级PlatformIO核心,以便使用最新的特性和bug修复。他们可以从源代码编译并安装PlatformIO核心,也可以通过包管理器(如pip)直接安装预编译的二进制文件。 PlatformIO核心包含了一系列工具和库,用于嵌入式系统开发。它支持多种开发板和微控制器平台,包括Arduino、Raspberry Pi、ESP8266等。使用PlatformIO核心,开发人员可以轻松地编写、编译和调试嵌入式应用程序,并直接在开发板上部署。 platformio-core- installer-develop的目标是让开发人员更加便捷地使用PlatformIO核心。它提供了灵活的安装和升级选项,以满足不同用户的需求。此外,它还提供了一些额外的功能,如自动依赖项管理和项目配置。 总之,platformio-core- installer-develop是一个有益的开源项目,它简化了PlatformIO核心的安装和管理,使开发人员能够更加轻松地进行嵌入式系统开发。 ### 回答3: platformio-core-installer-develop 是 PlatformIO 的一个分支,用于安装和管理 PlatformIO 的核心。PlatformIO 是一个开源的跨平台的物联网开发平台,它提供了全面的工具链和生态系统,用于开发和部署物联网设备。platformio-core-installer-develop 的目的是提供一个简单的方法来安装和更新 PlatformIO 的核心组件。 使用 platformio-core-installer-develop,你可以轻松地安装 PlatformIO 的核心组件,并管理它们的版本和更新。这个分支经过开发人员的持续维护和改进,可以确保 PlatformIO 的稳定性和功能完善性。 通过 platformio-core-installer-develop,你可以轻松地配置你的开发环境,并选择适合你的物联网项目的平台和框架。它提供了一系列的命令行工具和集成开发环境插件,帮助你进行项目的构建、调试和上传等操作。它还支持多种硬件平台,包括 Arduino、Raspberry Pi、ESP8266、ESP32 等。 此外,platformio-core-installer-develop 还提供了丰富的文档和示例代码,帮助你快速上手并学习如何使用 PlatformIO 进行物联网开发。你可以通过阅读文档和参考示例代码,了解如何使用 PlatformIO 的各种功能和特性,以及如何在不同的开发板上进行开发和测试。 总之,platformio-core-installer-develop 是 PlatformIO 的一个分支,它提供了一个方便的方法来安装和管理 PlatformIO 的核心组件,帮助你轻松地开发和部署物联网设备。它是一个功能强大、稳定可靠的开源工具,适用于各种物联网项目的开发和部署。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值