I/O进程线程,标准IO,函数

本文详细介绍了C语言中涉及文件操作的几个重要函数,如fflush用于刷新缓存,fprintf用于输出内容,fopen用于打开文件,以及fgetc/fputc、fgets/fputs、fread/fwrite和fseek/ftell/rewind等函数,展示了如何处理文件的读写和定位。

 1、fflush

       作用:

              强制刷新某个流的缓存区。

       头文件:stdio.h

       函数原型:

              int fflush(FILE *stream)

       参数:

              stream:传入想要操作的流。

       函数返回值:

              成功返回0,失败返回EOF(-1);

2、fprintf()

       作用:

              向指定流中输出内容

       头文件:stdio.h

       函数原型:

              int fprintf(FILE *stream,const char *format,…)。

       参数:

              stream:传入想要输出的流。

       函数返回值:

              成功返回输出的字节数,失败返回negative value;

补充:sprintf()

函数原型:

       int sprintf(char *str, const char *format, ...);

将内容输出到该地址中。

      

3、fopen()

       作用

              打开一个文件

       头文件

              #include<stdio.h>

       函数原型

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

       参数

              pathname: 想要打开文件的路径,

              mode:打开文件的模式。“+”:可读写,除了“a”以外都是从头开始写。

       返回值:

              成功返回打开文件的FILE*,失败返回NULL并设置错误号。

        fopen 是 C 语言中用于打开文件的函数。当你想打开一个文件时,你需要指定一个“mode”来确定你希望如何打开和操作这个文件。以下是 fopen的 mode 选项及其含义:

        1. r: 打开一个已存在的文件进行读取。
        2. w: 打开一个文件进行写入。如果文件已经存在,则其内容会被截断为零;如果文件不存在,会创建一个新文件。

        3. a: 打开一个文件进行追加写入。如果文件已经存在,写入的数据会被添加到文件的末尾;如果文件不存在,会创建一个新文件。

        4. r+: 打开一个已存在的文件进行读取和写入。

        5. w+: 打开一个文件进行读取和写入。如果文件已经存在,则其内容会被截断为零;如果文件不存在,会创建一个新文件。

        6.a+: 打开一个文件进行读取和追加写入。如果文件已经存在,写入的数据会被添加到文件的末尾;如果文件不存在,会创建一个新文件。

        7.b: 二进制模式。这通常与上述模式一起使用(例如,rb、wb),尤其是在那些区分文本和二进制文件的系统中,例如 Windows。在某些系统中,使用 b可能不会产生任何效果,但为了可移植性,最好在打开二进制文件时指定它。

        每次使用fopen函数时,都需要确保在之后使用fclose函数关闭文件,以释放系统资源并确保所有的数据都被正确地写入文件。

4、fgetc/fputc

       对单个字符进行操作

       1、fputc

       作用:

              向指定文件中输出单个字符

       头文件

              #inlcude<stdio.h>

       函数原型

              int fputc(int c,FILE *stream);

       参数

              c:想要输出的字符

        stream:想要输出到的流

       返回值

              成功返回输出字符的ASCII码值,失败返回EOF(-1)

       2、fgetc

       作用:

              向指定文件中获取单个字符

       头文件

              #inlcude<stdio.h>

       函数原型

              int fgetc(FILE *stream);

       参数

        stream:想要获取字符的流

       返回值

              成功返回获取字符的ASCII码值,失败或文件结尾返回EOF(-1)

5、fclose()

       作用:

              关闭指定的流

       头文件

              #inlcude<stdio.h>

       函数原型

              fclose(FILE *stream);

       参数

        stream:想要关闭指定的流

       返回值

              失败返回EOF(-1)

6、fgets/fputs

对行进行操作

1、fgets

       作用:

              从指定的流读取一行

       头文件

              #inlcude<stdio.h>

       函数原型

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

       参数

              s:接收读取到的字符串

              size:限定读取的字符串长度。

        stream:限定从那个流里面读取数据

       返回值

              失败或读到末尾返回NULL,成功返回s。

       2、fputs

       作用:

              向指定的流中输出一行

       头文件

              #inlcude<stdio.h>

       函数原型

              int fputs(const char *s, FILE *stream);

       参数

              s:想要输出的字符串

               stream:想要输出到指定的流

       返回值:

                成功返回一个非负数,失败返回EOF

7、fread/fwrite

       对块进行操作

       1、fread

    作用:

              从指定的流中读取一块内容

       头文件

              #inlcude<stdio.h>

       函数原型

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

       参数

        ptr:想要从流中读取到的内容的地址。

              size:对象的大小

              nmemb:对象的个数

        stream:需要操作的流

       返回值

              成功返回实际读取的nmemb,失败或读到末尾返回0。

       2、fwrite

       作用:

              向指定的流中写入一块内容

       头文件

              #inlcude<stdio.h>

       函数原型

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

       参数

              ptr:要写入流中的内容

              size:对象的大小

              nmemb:对象的个数

        stream:需要操作的流

       返回值

              成功返回实际写入的nmemb,失败返回0。

8、fseek/ftell/rewind

       1、ftell

       功能:

              获取书签位置

       头文件

              stdio.h

       函数原型

              long ftell(FILE *stream);

       参数

              stream:需要操作的流

       返回值:

              成功返回书签的位置,失败返回-1并设置错误号

       2、rewind

       功能:

              将书签回到初始位置

       头文件

              stdio.h

       函数原型

              void rewind(FILE *stream);

       参数

              stream:需要操作的流

       返回值:

              无返回值。

       3、fseek

    功能:

              偏移书签的位置

       头文件

              stdio.h

       函数原型

              int fseek(FILE *stream, long offset, int whence);

       参数

              stream:需要操作的流

              offset:偏移量,为整数,正数向后偏移,负数向右偏移,0为不偏移。

              whece:偏移起始位

                     SEEK_SET:文件开头

                     SEEK_CUR:当前位置

                     SEEK_END:文件末尾位置

       返回值:

              成功返回0,失败返回-1并设置错误号。

本研究基于扩展卡尔曼滤波(EKF)方法,构建了一套用于航天器姿态与轨道协同控制的仿真系统。该系统采用参数化编程设计,具备清晰的逻辑结构和详细的代码注释,便于用户根据具体需求调整参数。所提供的案例数据可直接在MATLAB环境中运行,无需额外预处理步骤,适用于计算机科学、电子信息工程及数学等相关专业学生的课程设计、综合实践或毕业课题。 在航天工程实践中,精确的姿态与轨道控制是保障深空探测、卫星组网及空间设施建设等任务成功实施的基础。扩展卡尔曼滤波作为一种适用于非线性动态系统的状态估计算法,能够有效处理系统模型中的不确定性与测量噪声,因此在航天器耦合控制领域具有重要应用价值。本研究实现的系统通过模块化设计,支持用户针对不同航天器平台或任务场景进行灵活配置,例如卫星轨道维持、飞行器交会对接或地外天体定点着陆等控制问题。 为提升系统的易用性与教学适用性,代码中关键算法步骤均附有说明性注释,有助于用户理解滤波器的初始化、状态预测、观测更新等核心流程。同时,系统兼容多个MATLAB版本(包括2014a、2019b及2024b),可适应不同的软件环境。通过实际操作该仿真系统,学生不仅能够深化对航天动力学与控制理论的认识,还可培养工程编程能力与实际问题分析技能,为后续从事相关技术研究或工程开发奠定基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clown_30

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值