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

Linux文件操作详解:一切皆文件

1. Linux 下的文件类型

Linux 中常见的 7 种文件类型

标识类型说明
b块设备文件存储类设备(硬盘等)
c字符设备文件输入/输出设备(鼠标、键盘、显示器等)
d目录文件文件夹
-普通文件.c.h.txt.jpg.mp4a.out
l软链接文件类似快捷方式
s套接字文件网络通信
p管道文件进程间通信

ls -l 输出解析

执行:

ls -l
# 或
ll

示例:

d  rwxrwxr-x   2  linux  linux  4096  1月 29  2024  20240129/

字段含义:

  1. 文件类型d 表示目录

  2. 文件权限

    • r:读权限(read)

    • w:写权限(write)

    • x:执行权限(execute)

    • -:无权限

  3. 链接个数

  4. 用户名(所有者)

  5. 组名(所属用户组)

  6. 文件大小(字节)

  7. 最后修改时间

  8. 文件名称

权限分三组:

第一组(rwx):文件所有者权限

第二组(rwx):同组用户权限

第三组(r-x):其他用户权限


2. 文件操作思想

文件操作的一般流程:

  1. 打开文件

  2. 读写文件

  3. 关闭文件


3. 文件操作方法

标准 IO

C 标准库 提供,基于 文件流(FILE*) 操作常用函数:fopen / fclose      fgetc / fputc       fgets / fputs    fread / fwrite


4. 标准 IO 函数详解

4.1 fopen —— 打开文件

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

功能:打开文件并返回文件流指针 

参数pathname:文件路径    

    mode:   "r" :只读,文件必须存在        "r+" :读写,文件必须存在

   "w" :只写,存在则清空,不存在则创建  "w+" :读写,存在则清空,不存在则创建

   "a" :追加写,不存在则创建                       "a+" :读写追加,不存在则创建

返回值:成功:FILE *  失败:NULL


4.2 fputc / fgetc —— 单字符写入与读取

int fputc(int c, FILE *stream);

功能:向文件写入一个字符

返回值:成功返回写入字符的 ASCII 值,失败返回 EOF

int fgetc(FILE *stream);

功能:从文件读取一个字符返回值:成功:读取的字符 ASCII 值失败或文件结束:EOF


4.3 fputs —— 写入字符串

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

功能:写入字符串(不写入 \0 结束符)

返回值:成功:非负整数       失败:EOF


4.4 fgets —— 读取一行

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

功能:从文件读取一行数据 

返回值:成功:s 的首地址     失败或文件结束:NULL


 

5. 文件类型细分

文本文件:如 .c.txt(以字符存储,便于直接查看) 

二进制文件:如 .jpg.mp4a.out(存储为二进制数据)


6. 主函数参数

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

argc:命令行参数个数

argv:指针数组,每个元素指向一个参数字符串                                                                                     argv[0]:程序名         argv[1]:第一个参数       argv[2]:第二个参数

示例:

./a.out aaa bbb
# argc = 3
# argv[0] = "./a.out"
# argv[1] = "aaa"
# argv[2] = "bbb"

 

7. 总结

标准 IO

使用 C 标准库函数    

常用函数:  fopen / fclose      fgetc / fputc      fgets / fputs

http://www.lryc.cn/news/615566.html

相关文章:

  • app功能测试工具
  • 智慧水务漏检率↓75%:陌讯水下视觉监测方案实战解析
  • 动态规划(相同地方不同状态)
  • Web前端之Vue框架
  • 【牛客刷题】小红的区间删除
  • MM-2025 | 浙大vivo需求驱动的具身导航!CogDDN:具有基于决策优化和双过程思维的认知驱动导航方法
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • PyQt5技术栈简述
  • 如何搭建ELK
  • 【Spring Boot 快速入门】八、登录认证(二)统一拦截
  • 环路补偿知识
  • 算法_python_学习记录_01
  • 比较useCallback、useMemo 和 React.memo
  • leetcode 11. 盛最多水的容器 -java
  • 欢迎走进《励曼旋耕》
  • HarvardX TinyML小笔记1(番外2:神经网络)
  • 物联网之常见网络配置
  • UE破碎Chaos分配模型内部面材质
  • 编程速递:2025 年巴西 Embarcadero 会议,期待您的到来
  • 【unitrix数间混合计算】2.10 小数部分特征(bin_frac.rs)
  • 【QT】QMainWindow:打造专业级桌面应用的基石
  • pdf预览Vue-PDF-Embed
  • Linux下管道的实现
  • js获取当前时间
  • 基于dynamic的Druid 与 HikariCP 连接池集成配置区别
  • Web自动化技术选择
  • [Oracle] TRUNC()函数
  • 11. 为什么要用static关键字
  • Qt Graphics View框架概述
  • SpringBoot日志关系