文件操作
Posted 邢亚柯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。
1、缓冲区问题
输出缓冲区:
(1)遇到 “\\n” 立即刷新缓冲区
(2)程序调用fflush函数刷新缓冲区。
(3)程序以exit结束,缓冲区会刷新。如果以_exit结束,缓冲区的数据被直接清空。
(4)缓冲区满也会将缓冲数据刷新出来。(共1024字节)
输入缓冲区
2、主函数传参
int main(int argc,char *argv[ ],char * envp[ ])
argc :传递给主函数的参数个数
argv :传递给主函数的参数列表
envp: 环境变量列表
3、LINUX文件操作
#include<fcntl.h>需要引用的头文件
fopen fread fwrite fclose fseek // 库文件
FILE * fopen (char * pathname,char *flag);
int read (int fd ,void *buff , size_t size);
int write(int fd ,void *buff , size_t size);
int close (int fd );
int lseek (int fd ,int count , size_t pos); pos : SEEK_CUR(当前) SEEK_END(文件尾) SEEK_SET(文件头)
int open (char *pathname , size_t flag , /*size_t mode */);
pathname : 文件路径+文件名
flag : 打开方式 O_RDONLY O_WRONLY O_RDWR O_CREAT(如果设置这个参数文件不存在时创建文件,创建时才需要第三个参数支持)
mode :文件权限 0nnn(0~7)
返回值:成功返回打开文件的标志,即就是文件描述符(内核利用文件描述符来访问文件,文件描述符为非负整数)
扩充:
1、main函数运行结束后可以运行代码,要利用atexit函数。
atexit(void (*fun)(void));
参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。
输出结果为 I am very hungry 。可以看出它的调用顺序和注册顺序是反的。
2、main 函数执行之前都做了哪些工作
(1)操作系统创建进程后,把控制权交到了程序入口,这个入口往往是程序运行库中的某个入口函数。
(2)入口函数对运行库和程序运行环境进行初始化,包括堆、I/O、线程、全局变量的构造等等。
(3)将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数。
以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章