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);

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

相关推荐
掉进电商坑三年没爬出来的东叔几秒前
云服务器搭建个人网站实战:从零到公网访问,含域名HTTPS
运维·服务器·https
xiaoye-duck7 分钟前
《Linux 网络编程》深入理解 epoll(上):从接口到底层内核工作机制剖析
linux·网络
IT大白鼠10 分钟前
彭大帅的AI运维助手跨出 Linux:全面接管 Windows 服务器
运维·服务器·人工智能
reasonsummer22 分钟前
【办公类-131-05】20261007中2班周计划制作(原资料Word单元格不统一 失败)
运维·服务器
ouynagda1 小时前
嵌入式Linux i.MX6ULL系统移植学习笔记
linux·笔记·学习
Mikko71 小时前
JVM 线上排查实战(六):JFR 怎么用?JDK 8 要不要加 UnlockCommercialFeatures、jfr 命令在哪、录的文件为什么读不了
java·运维·jvm·后端
NightReader1 小时前
PVE 环境部署
linux
蚰蜒螟1 小时前
一次挂载的完整旅程:Linux 内核 VFS 到 ext4 的调用链剖析
linux·运维·服务器
害人终害己1 小时前
Redis 日志:AUTH 认证信息
运维·服务器
a努力。1 小时前
Context-State-Memory三重信息架构揭秘
java·服务器·前端