Linux 文件 IO vs 标准 IO:缓冲区、目录操作、常用函数汇总

文件IO和标准IO的区别

缓冲区:

1.行缓冲

默认大小1024字节(1K),主要使用在人机交互终端上。

off_t lseek(int fd, off_t offset, int whence);

功能:重新定位文件的读写位置

参数:

fd:文件描述符

offset:偏移量

whence:要偏移的起始位置

SEEK_SET :从文件开头偏移

SEEK_CUR: 从当前读写位置偏移

SEEK_END :从文件末尾偏移

返回值:

成功:返回当前读写位置到文件开头的偏移量

失败:-1

刷新条件:

遇到'\n'刷新

程序结束刷新

使用fflush()强制刷新

缓冲区满时自动刷新

2.全缓冲

默认大小4096字节(4K),文件交互

刷新条件:

程序结束刷新

文件关闭自动刷新

全缓冲区满时自动刷新

使用fflush()强制刷新

3.无缓冲

0k,出错信息输出,标准出错设备

stderr

目录文件

  1. 打开目录文件:opendir()
  2. 读目录文件 :readdir()
  3. 关闭目录文件 : closedir()

opendir

DIR *opendir(const char *name);

**功能:**打开目录文件并获得目录流指针

参数:

name:目录名

返回值:

成功:目录流指针

失败:NULL

closedir

int closedir(DIR *dirp);

int closedir(DIR *dirp);

功能 :关闭目录文件

参数:

dirp:目录流指针

返回值 :

成功: 0

失败:-1

readdir

struct dirent *readdir(DIR *dirp);

功能:从目录流中读取数据

参数 :

dirp:目录流指针

返回值:

成功:struct dirent 指针,代表读到的文件信息

失败:NULL

文件末尾:NULL

命令:

mkdir:创建文件夹

touch:创建普通文件

目录遍历:

复制代码
int main(void)
{
DIR *pdir = opendir("/dev");
if (NULL == pdir)
{
printf("opendir error\n");
return -1;
}
while (1)
{
struct dirent *pinfo = readdir(pdir);
if (NULL == pinfo)
{
break;
}
if ('.' == pinfo->d_name[0])
perror
{
continue;
}
printf(" %s : %ld\n", pinfo->d_name, pinfo->d_ino);
}
closedir(pdir);
return 0;
}

其他

int printf(const char *format, ...);

int fprintf(FILE *stream, const char *format, ...);

功能:将格式化后的字符串写入到stream文件流代表的文件中。

int dprintf(int fd, const char *format, ...);

功能:将格式化后的字符串写入到fd所代表的文件中。

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

功能 :将格式化后的字符串写入到字符型数组中

字符串的拼接,格式化

可以将整形数据、浮点型数据等转换成字符串

char *strtok(char *str, const char *delim);

功能 :字符串截取函数

参数 :

str:要截取的原始字符串

delim:要截断的分隔符

返回值 :

成功:截取到的子字符串的首地址

失败:NULL(已经到字符串末尾)

出错处理函数:

strerro

char *strerror(int errnum);

功能 :将错误码转换成对应的错误信息字符串

参数 :

errnum:错误码:errno

返回值:

成功:返回错误码对应的字符串首地址

失败:NULL

perror

void perror(const char *s);

功能:打印自己的出错处理信息和系统系统给出的出错

相关推荐
东方佑9 分钟前
去魅:工具调用、Agent 调用、A2A、MCP、Harness 到底都是什么
服务器·网络·数据库
刚入门的大一新生25 分钟前
Linux-线程概念
linux·jvm
H.莓飛34 分钟前
【数据结构】排序总结与规模实测
linux·服务器·开发语言·数据结构·visual studio·1024程序员节
xianyuCcCcCCCcc36 分钟前
Kubernetes :健康检查、认证授权与可视化面板
运维·云原生·kubernetes·dashboard
Zenova EdgeOS1 小时前
Linux 日志实战:用 journalctl 精准检索与治理工业边缘日志
linux·运维·chrome
Dory_Youth1 小时前
电脑的搜索功能不能用,一搜就黑屏闪退
运维·笔记
Dxy12393102161 小时前
Linux 压缩解压相关命令介绍
linux·运维·服务器
eleven_4u1 小时前
QPS如何计算,如何部署架构
java·linux·运维·jvm·中间件
云飞云共享云桌面2 小时前
非标自动化工厂研发部门怎么实现一台服务器带10个SolidWorks设计并发
运维·服务器·人工智能·3d·自动化·电脑·制造
分布式存储与RustFS2 小时前
你的网站备份只存一块盘?把 1Panel 的备份目标换成 RustFS
运维·开源·备份·对象存储·1panel·s3·rustfs