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

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停止读取

相关文章:

  • 数据库学习 第一次练习
  • 2025.2.15——1400
  • 如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题
  • 哈希算法题
  • P9853 [入门赛 #17] 方程求解
  • 正点原子ESP32S3系列开发板全面支持小智AI
  • LDO技术:线性调整率与负载调整率全解析
  • Maven打包保留参数名称
  • 数据库设计流程范式
  • SQL Server:查看当前连接数和最大连接数
  • 基于单片机的多功能热水器设计(论文+源码)
  • JavaScript中Map和Set数据结构详解
  • 基于深度学习的消费物联网中安全音乐流量传输方法
  • 【Redis系列】Redis安装与使用
  • 负载均衡集群——LVS-DR配置
  • 区块链账户的概念与安全管理
  • 在nodejs中使用RabbitMQ(七)实现生产者确认
  • SCI学术论文图片怎么免费绘制:drawio,gitmind
  • ES 与 MySQL 数据同步:深入解析与实战拓展
  • Qt的QListWidget样式设置
  • 雷军:过去一个多月是创办小米以来最艰难的时间
  • 兵韬志略|美2026国防预算未达1万亿,但仍寻求“暗度陈仓”
  • 巴基斯坦称回应挑衅,对印度发起军事行动
  • “毛茸茸”的画,诗意、温暖又治愈
  • 850亿元!2025年中央金融机构注资特别国债(一期)拟第一次续发行
  • 康子兴评《文明的追求》|野人脚印:鲁滨逊的恐惧与文明焦虑