当前位置: 首页 > article >正文

Linux软件编程——标准IO(2025.2.14)

目录

一、操作系统

1.重点内容

2.学习方法

二、文件操作

1. 必要性

2. Linux文件类型

3. Linux文件操作方法

4.文件操作思想     

5.标准IO

6.函数接口

(1)fopen打开文件

(2)fputc字符写入文件

(3)fclose关闭文件

(4)fgetc字符读取

(5)fputs字符串写入文件

(6)fgets字符串读取


一、操作系统


1.重点内容

        (1)文件操作:一切皆文件

        (2)多任务:线程、进程

        (3)网络编程

        (4)服务器+数据库

2.学习方法

        (1)大量的函数接口

        (2)框架性、流程性强

二、文件操作


1. 必要性

        (1)保存数据(掉电数据不丢失)

        (2)一切皆文件:鼠标,键盘,显示器.....
                 操作硬件设备

2. Linux文件类型

        按文件类型的首字母共分7类:

        b        块设备文件存储设备
c    字符设备文件    输入输出设备:键盘、鼠标、显示器
d目录文件
-普通文件xxx.c   xxx.txt   a.out  xxx.jpg   xxx.mp4
l软连接文件
s套接字文件网络通信
p管道文件进程间通信

3. Linux文件操作方法

                I: input   O:output

        (1)标准IO

               标准C库提供的一套文件操作接口。
         
        (2)文件IO(属于系统调用)

               Linux内核为Linux系统提供的一套文件操作接口

4.文件操作思想     

        (1)打开文件

        (2)文件、文件

        (3)关闭文件

5.标准IO

        <stdio.h>

        (1)打开文件                   fopen()

        (2)读文件、写文件:fgetc()/fputc()、fgets()/fputs()、fread()/fwrite()

        (3)关闭文件                   fclose()

6.函数接口

(1)fopen打开文件

           FILE  * fopen(const  char  * pathname,  const  char  * mode);
功能:打开一个文件,并且将文件关联到一个流上
参数:
           pathname : 要打开的文件名的指针
           mode:打开方式

"r" 只读方式打开,文件必须存在
"r+"读写方式打开,文件必须存在
"w" 只写方式打开,文件不存在:创建,文件存在:清空
"w+"读写方式打开,文件不存在:创建,文件存在:清空
"a" 追加写的方式打开,文件不存在:创建
"a+"读写方式打开,文件不存在:创建,文件存在:可追加写从头读

返回值:
           成功:FILE *  :文件流指针
           失败:NULL

拓展:

        文件流:数据从文件流入和流出体现的字节流

        FILE * ------>文件流指针

        标准IO:将一个打开的文件和一个文件流指针(FILE *)关联,
                       后面操作文件,皆面向文件流指针

(2)fputc字符写入文件

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

拓展:

        od -c 文件名 

        查看文件中的字符

练习:
1. 使用fputc将"hello world"写入到1.txt文件中

(3)fclose关闭文件

           int  fclose(FILE  * stream);
功能:关闭一个文件
参数:stream:文件流指针
返回值:
          成功:0
          失败:EOF (-1)

(4)fgetc字符读取

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

./a.out  filename  aaa  bbb  ccc


main(int argc, char *argv[])
{

}

拓展:

fgetc和fputc如何读写终端:

        终端:文件

        操作系统默认打开了三个流:

        FILE *

        stdin    -------->标准输入流-----》键盘
        stdout  -------->标准输出流------》显示屏(终端)
        stderr  -------->标准出错流------》显示屏(终端)


阻塞:

练习:实现文件的拷贝:
./a.out  srcfile dstfile


fgetc/fputc :  一个字节读写文件
                   ASCII文件和二进制文件


-(普通文件) :ASCII文件:xxx.c  xxx.h  xxx.txt

        '2''0''2''5' -—->   0011 0010 0011 0000 0011 0010 0011 0101
       
        二进制文件: a.out   xxx.jpg         xxx.png     xxx.mp3

            2025   -—->   0000 0000 0000 0000 0000 0111 1110 1001

(5)fputs字符串写入文件

           int  fputs(const  char  * s, FILE  * stream);
功能:将字符串写入到文件
参数:
          s:要写入的字符串的首地址
          stream:文件流指针

返回值:
          成功:>=0
          失败:EOF

(6)fgets字符串读取

           char  * fgets(char  * s, int  size, FILE  * stream);
功能:从文件中读取一行数据(遇到\n停止)
参数:
          s:读取到的数据存放的首地址
          size:期待读到的字节数
          stream:要读的文件流指针
返回值:
          成功:返回存储数据的首地址(s)
          失败:NULL
          读到文件末尾:NULL

注:几种读取数据的函数的比较

        scanf:遇到空格或者tab停止读取

        fgets:遇到\n停止读取

        gets:

fgets和gets的区别:

        1. fgets会保留\n字符,gets会去掉\n
        2. gets是危险的,没有size的限制
        3. fgets最多读取size-1个字符
        4. fgets遇到\n停止读取


http://www.kler.cn/a/547352.html

相关文章:

  • 微信小程序 - 组件
  • DELL 服务器 OpenManage监控指标释义
  • 2024年认证杯SPSSPRO杯数学建模A题(第二阶段)保暖纤维的保暖能力全过程文档及程序
  • [生信云问题分析] 为什么医院/单位/校园网络,无法通过ssh协议访问服务器
  • Macos下载 unity 的步骤与使用方法
  • 架构——LVS负载均衡主要模式及其原理、服务水平、优缺点
  • 正则表达式(竞赛篇)
  • Spring Boot 从 2.7.x 升级到 3.3注意事项
  • VS编译生成moc文件
  • 【Docker】容器被停止/删除的方式及命令:全面解析与实践指南
  • 文生图与图生图两款AI工具Midjourney(MJ)和Stable Diffusion(SD)对比
  • React生产环境下使用mock.js
  • C# 调用 C++ 动态库接口
  • 【LeetCode: 611. 有效三角形的个数 + 排序 + 双指针】
  • 07:串口通信(二):收发数据包
  • SQL SERVER的PARTITION BY应用场景
  • 滑动窗口算法篇:连续子区间与子串问题
  • 算法与数据结构(多数元素)
  • Spring篇--AOP
  • 并发编程---synchronized关键字,以及synchronized同步锁