Linux 文件 IO vs 标准 IO:缓冲区、目录操作、常用函数汇总
2026/9/18 23:57:16 网站建设 项目流程

文件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);
功能:打印自己的出错处理信息和系统系统给出的出错

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询