linux软件编程

embedded/2025/2/15 13:31:20/


IO(文件) 

文件: 一组相关数据的有序集合
文件名: 这组相关数据的一个名称

linux里面对文件的处理:
思想: 一切皆文件 ,文件用来存储数据(数据、指令)
linux文件类型(7中)

b -- block      -- 块设备文件   --- 硬盘(存储设备) 
c -- character  -- 字符设备文件 --- 鼠标 
d -- directory  -- 目录文件     
- -- regular    -- 普通文件 
l -- link       -- 软连接文件   --- 类似windows的快捷方式  
p -- pipe       -- 管道文件     --- 实现操作系统中 进程间的一些 信息交换(通信)
s -- socket     -- 套接字文件   --- 网络的时候 (进程间的通信)

文件操作 

文件操作三步骤:
1.打开 
2.读写    
3.关闭 

Linux提供的两种文件操作方式:
文件编程:
1.标准IO --- 库函数  -------标准c库函数,
2.文件IO --- 系统调用-------Linux内核为用户提供的函数接口
系统调用:Linux内核为用户提供的函数接口
库函数:标准c库函数, 对Linux内核中系统调用的封装

 标准IO库:
1.标准io的概念 
    1975 Dennis Ritchie编写, IO库,
    从C语言的标准,ANSI c 
    IO  input  output
    I: 键盘是标准输入设备 ====》默认输入就是指键盘  /dev/input
    O: 显示器是标准输出设备 ==》默认输出就是指显示器
    Linux操作系统当中IO都是对文件的操作
    C一部分,任何支持标准C的系统都可使用标准IO实现文件存储
    标准IO在UNIX上是对文件IO的封装
    一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,
    加入缓冲区,可以有效减少系统调用的次数,节省系统IO调度资源

操作方法 


    1.打开 -- fopen  //FILE open
    2.读写 --
              fgetc / fputc   读出、写入单个字符
              fgets / fputs   读出、写入一行字符
              fread / fwrite  读出、写入指定长度数据
    3.关闭 -- fclose          

满手册的定义

man手册
    标准man手册分为8个章节:
    man 1        用户命令
    man 2        系统调用
    man 3        c函数库调用
    man 4        设备文件和特殊文件
    man 5        配置文件和格式
    man 6        游戏相关
    man 7        杂项,总述
    man 8        管理类命令

函数接口

补充说明


        数据从文件当中流入和流出所体现出来的字节流叫做流

        FILE 结构定义的对象(FILE * 指向的对象)称之为流对象,FILE *叫文件流指针
        标准IO将对文件的操作转换成了对"流"的操作。
        所以,标准IO的文件相关的函数都是围绕着 FILE进行的
          FILE * fp 
          FILE * fp;//流指针------关联一个文件   
          FILE * 实际上是指向了一块内存空间(缓存,fileno)
          FILE *fp <->【FILE结构体[缓存,fileno]】//堆区(malloc)

1.fopen
    #include <stdio.h>
    FILE* fopen(const char *path, const char *mode);
    功能:
         流打开函数 (打开文件,并关联到一个流)
    参数:
        @path --要打开的文件的文件名(字符串形式)
        @mode --打开文件的操作模式
            r ---打开文件做读操作
                 注意:
                 文件必须存在 
           
            r+   打开文件做读写操作
                 注意:
                 文件必须存在
                 
            w    打开文件做写操作
                 注意:
                 如果文件已经存在,则会将文件清空为0
                 如果文件不存在,则会创建一个新文件。
                 
            w+  打开文件做读写操作
                 注意:
                 如果文件已经存在,则会将文件清空为0
                 如果文件不存在,则会创建一个新文件。

            a    打开文件做写操作
                 注意:
                 如果文件已经存在,则在文件末尾进行写入 
                 如果文件不存在,则会创建一个新文件。
                 
            a+   打开文件做读写操作
                 注意:
                 如果文件已经存在,则在文件末尾进行写入 
                 如果文件不存在,则会创建一个新文件。
    返回值:
       成功 FILE *  (文件流指针)
       失败 NULL 并且 设置 errno 表明错误原因 

2.fclose
      int fclose(FILE *fp);
      功能:  关闭文件流指针 
      参数:
        fp:文件流指针 
      返回值:
        成功返回0 
        失败返回EOF(-1)
      注意:fopen操作完毕后使用fclose关闭,否则会产生内存泄漏
           不要重复调用fclose 

3.fputc
    int fputc(int c, FILE *stream);
    功能:向流中写入一个字符
    参数:
        c:要写入的字符
        stream:文件流指针
    返回值:
        成功返回 写入的字符ASCII码值
        失败返回 EOF 

4.fgetc
    int  fgetc(FILE *stream);
    功能:
        从流中读取一个字符
    参数:
        stream:文件流指针
    返回值:
        成功返回读到字符的ASCII码值
        读到文件末尾 返回 EOF   
        失败返回EOF     EOF 

 操作系统在运行一个程序时,会默认打开三个流:
        stdin        FILE*        标准输入流   ---->键盘
        stdout         FILE*        标准输出流   ---->屏幕
        stderr         FILE*        标准出错流   ---->屏幕
       gets scanf getchar ->  stdin 
      puts printf putchar -> stdout 
       perror -> stderr 


http://www.ppmy.cn/embedded/162415.html

相关文章

机器学习实战之基于随机森林的气温预测

基于随机森林的气温预测 在气象学领域&#xff0c;准确地预测天气对于许多行业来说都是至关重要的。随着机器学习技术的发展&#xff0c;我们现在能够利用历史数据来提高天气预报的准确性。本文将介绍如何使用随机森林算法来进行气温预测&#xff0c;并分享具体的Python实现代码…

青少年编程与数学 02-009 Django 5 Web 编程 06课题、模型定义

青少年编程与数学 02-009 Django 5 Web 编程 06课题、模型定义 一、模型二、定义模型1. 导入模型类2. 定义模型类3. 定义字段4. 添加元数据&#xff08;可选&#xff09;5. 定义模型方法&#xff08;可选&#xff09;6. 迁移模型 三、模型字段字符字段数字字段日期和时间字段布…

C++基础知识(三)之结构体、共同体、枚举、引用、函数重载

九、结构体、共同体和枚举 1、结构体的基本概念 结构体是用户自定义的类型&#xff0c;可以将多种数据的表示合并到一起&#xff0c;描述一个完整的对象。 使用结构体有两个步骤&#xff1a;1&#xff09;定义结构体描述&#xff08;类型&#xff09;&#xff1b;2&#xff…

《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?要怎么解决?

《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因&#xff1f;要怎么解决&#xff1f; 宝子们&#xff0c;是不是在玩《只狼》的时候&#xff0c;突然弹出一个提示&#xff1a;“找不到mfc140u.dll文件”&#xff1f;这可真是让人着急上火&#xff01;别慌&#xff0c;今…

逆境、情绪低落时可用的锦囊、咒语

《浮生一梦》&#xff08;一&#xff09; 大多数人都经历过逆境低谷、失败、挫折、看似无端情绪低落、抑郁… 人逢情绪低落时&#xff0c;几乎任何话都听不进去&#xff0c;再正的能量也塞不进脑子&#xff0c;笑话笑不出来&#xff0c;食不知味… 复原力不强者很难走出来&am…

云原生时代的后端开发:架构、工具与最佳实践

随着云计算的迅猛发展&#xff0c;云原生&#xff08;Cloud Native&#xff09;逐渐成为后端开发的主流趋势。云原生后端不仅能够提高应用的灵活性和可扩展性&#xff0c;还能显著优化开发和运维流程。本文将围绕云原生后端的关键概念、当前热门技术及最佳实践&#xff0c;帮助…

通过命令行运行py文件与通过ide运行py文件,对文件中模块的引用方式的影响

通过命令行运行 Python 文件和通过 IDE 运行 Python 文件时&#xff0c;模块的引用方式 会受到一些影响&#xff0c;主要体现在 工作目录 和 模块导入路径&#xff08;sys.path&#xff09;的设置上。下面详细介绍这两种方式的区别和它们如何影响模块引用。 1. 通过命令行运行…

【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)— 4.4 文本分类与情感分析】

一、引言:藏在文本背后的“智能大脑” 在数字时代,互联网上的文本信息浩如烟海,从社交媒体评论到新闻报道,人们需要快速理解并分类这些信息。循环神经网络(RNN)和长短时记忆网络(LSTM)正是实现这一目标的强大工具。它们通过模拟人类的记忆和处理序列信息的能力,在文本…