自学linuxday27,标准io和文件io

文件操作详解

1. 文件关闭操作

使用 fclose 函数关闭文件流:

c 复制代码
int fclose(FILE *stream);
  • 参数 :stream 为需要操作的文件流指针
  • 作用 :释放 fopen 申请的系统资源
  • 返回值 :成功返回 0,失败返回 EOF
2. 缓冲机制
(1) 行缓冲(1024字节)

适用于终端交互(如 stdout),刷新条件:

  • 遇到换行符 \n
  • 缓冲区满(1024字节)
  • 程序正常结束
  • 主动调用 fflush(stdout)
c 复制代码
printf("aaa");
fflush(stdout);  // 强制刷新
(2) 全缓冲(4096字节)

适用于普通文件操作,刷新条件:

  • 缓冲区满(4096字节)
  • 程序结束
  • 主动调用 fflush(fp)
c 复制代码
fputs("hello", fp);
fflush(fp);  // 强制刷新
(3) 无缓冲

适用于错误处理(如 stderr):

  • 数据直接输出,不缓存
c 复制代码
fprintf(stderr, "fopen error %s", filename);
3. 文件定位函数
c 复制代码
int fseek(FILE *stream, long offset, int whence);
long ftell(FILE *stream);
void rewind(FILE *stream);
  • fseek 参数 :
    • whence:起始位置(SEEK_SET/SEEK_CUR/SEEK_END)
    • offset:正数向文件末尾偏移,负数向文件开头偏移
  • ftell:返回当前指针距离开头的字节数
  • rewind:复位指针到文件开头
4. 文件IO与标准IO对比
特性 标准IO 文件IO
访问资源 FILE* 文件流指针 int 文件描述符
缓存机制 带缓冲区(适合普通文件) 无缓冲区(适合设备文件)
操作函数 fopen/fclose open/close
5. 文件操作步骤
  1. 打开文件:
c 复制代码
int open(const char *pathname, int flags, int mode);
  • flags:O_RDONLY/O_WRONLY/O_RDWR/O_CREAT/O_TRUNC/O_APPEND
  1. 读写操作:
c 复制代码
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
  1. 关闭文件:
c 复制代码
int close(int fd);
相关推荐
程序员-Benothing10 小时前
Vim编辑器从入门到精通:模式、快捷键、配置、插件
linux·运维·服务器
‎ദ്ദിᵔ.˛.ᵔ₎11 小时前
linux 进程信号 (上)
linux·服务器
15Moonlight11 小时前
Linux网络(02):Socket 编程 UDP
linux·网络·udp
wuminyu12 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
liulilittle12 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
DongQiShanRen12 小时前
玄龙(上):TICK 主循环——意识心跳怎么跳
linux·jvm·数据库·人工智能·数据挖掘·rust
小此方12 小时前
Linux网络(二十一):深入理解 TCP 异常处理:网线断开、Keepalive 保活机制与 Linux 内核传输层协议源码剖析
linux·网络·tcp/ip
pride.li12 小时前
Python 安装
linux·python·ubuntu
笔墨登场说说13 小时前
centos 8 使用 kafka_2.13-4.3.1.tgz 安装kafka
linux·kafka·centos
luo_guibin13 小时前
Linux系统下OpenSSL升级全流程,新旧版本切换
linux·运维·服务器