归纳整理Linux下C语⾔常⽤的库函数----⽂件操作
在没有IDE的时候,记住⼀些常⽤的库函数的函数名、参数、基本⽤法及注意事项是很有必要的。
参照Linux_C_HS.chm的⽬录,我⼤致将常⽤的函数分为⼀下⼏类:
1. 内存及字符串控制及操作
2. 字符串转换
3. 字符测试
4. ⽂件操作
5. 时间⽇期
6. 常⽤数学函数
7. ⽂件内容操作
8. ⽂件权限控制
9. 进程操作
10. 线程操作
11. Socket操作
12. 信号处理
13. 数据结构及算法
这次主要总结的是上⾯⿊⾊部分,关于⽂件操作的函数。
系统调⽤归类
*
* 函数名⽤法备注
*
*1. int open(const char *pathname, int flags); open and possibly create a file or device flags 必须包含O_RDONLY, O_WRONLY, or O_RDWR中的任何⼀个
*
*2. int open(const char *pathname, int flags, mode_t mode); UP mode只是在flags中包含O_CREAT时才有效
*
*3. int fsync(int fd); synchronize a file's in-core state with storage device 写完数据close前必须先同步,以防意外
*
*4. off_t lseek(int fd, off_t offset, int whence); 定位⽂件位置第三个参数可以为SEEK_SET SEEK_CUR SEEK_END
*
*5. ssize_t read(int fildes, void *buf, size_t nbyte); UP ⽂件位置会随读取的字节数移动
*
*6. ssize_t write(int fildes, const void *buf, size_t nbyte); UP UP
*
*7. int close(int fd); UP UP
*
*8. void *mmap(void *addr, size_t length, int prot, int flags, 内存映射先⽤fstat得到⽂件⼤⼩,然后使⽤该函数将⽂件内容映射到内存中,然后就可以int fd, off_t offset); 直接调⽤字符串函数操作。
*
*9. int munmap(void *addr, size_t length); 释放内存 UP
*
*10. int ftruncate(int fd, off_t length); truncate a file to a specified length 在新建⽂件时,如果⽤到内存映射,那么就需要先调⽤该函数给⽂件预置⼀个⼤⼩,否则会出错*
*11. int fstat(int fd, struct stat *buf); 获得⽂件的基本信息具体参数见man,可以查到⽂件的⼤⼩、修改⽇期等
*
C99标准归类
/*标准C函数
* 函数名⽤法备注
*
*1. FILE *fopen(const char *path, const char *mode); NT mode可以为r,r+,w,w+,a,a+,rw等
*
*2. int fseek(FILE *stream, long offset, int whence); NT 定位⽂件位置
*
*3. long ftell(FILE *stream); 当前⽂件位置 NT
*
*4. void rewind(FILE *stream); 移动⽂件位置到⽂件头 NT
*
*5. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); NT NT
*
*6. size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream); NT NT
*
*7. int feof(FILE *stream); 判断⽂件是否已经读完 NT
*
*8. int fscanf(FILE *stream, const char *format, ...); 按格式读取⽂件流还有scanf家族的其他函数,⽐如sscanf可以读取字节流
linux怎么读取文件内容*
*9. int fprintf(FILE *stream, const char *format, ...); 按格式将内容写⼊到⽂件中还有sprintf,vprintf等等
*
*10. int vfprintf(FILE *stream, const char *format, va_list ap); 直接将不定参数写⼊到⽂件相对应的还有读取函
*
*11. int fflush(FILE *stream); NT NT
*
*12. char *fgets(char *s, int size, FILE *stream); NT 读到换⾏符或EOF时停⽌
*
*13. int fileno(FILE *stream); 返回整型⽂件描述符这是和GLIBC相通的地⽅
*
*14. int fputs(const char *s, FILE *stream); NT 不写⼊结束符\0
*
*/
⽂件权限控制类函数汇总
* 函数名⽤法备注
*
*1. int remove(const char *pathname); NT 删除指定路径的⽂件
*
*2. int rename(const char *old, const char *new); NT 重命名
*
*3. int utime(const char *path, const struct utimbuf *times); NT 修改⽂件的存取时间
*
*4. int stat(const char *restrict path, struct stat *restrict buf); NT 可以进⼀步获得⽂件的详细信息
*
*5. int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
NT 读取⽂件夹内容
*
*6. DIR *opendir(const char *name); NT 打开⽂件夹,这是第⼀步
*
*7. char *getcwd(char *buf, size_t size); NT 获得当前的绝对路径
*
*8. int chmod(const char *path, mode_t mode); NT 改变⽂件权限
*
*9. int closedir(DIR *dirp); NT 打开⽂件夹后必须要关闭
*
*10. int chdir(const char *path); NT 改变当前的⼯作⽬录
*
附加,处理不定参需要⽤到的函数
*
*1. void va_start(va_list ap, last); 必须⾸先被调⽤
*
*2. type va_arg(va_list ap, type); 紧接着,根据%s %d %c得到实际的值
*
*3. void va_end(va_list ap); 得到需要的值后,就调⽤end。
*
*
如上,只是对常⽤的函数进⾏简单的总结,⼀些不常⽤的,⽐如链接之类的,就没有进⾏归类。
这些函数,⾄少要知道有这些功能,⽽不需要⾃⼰再去实现,具体参数不清楚的,知道函数名后,在Linux下,⽤man fun就可以有更具体的阐述。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论