Linux程序设计——文件操作(标准I/O库)
来源:互联网 发布:淘宝客服日常工作表格 编辑:程序博客网 时间:2024/05/21 17:25
Linux中定义了与底层文件访问对应的函数库即标准I/O库,这些库函数在头文件stdio.h中定义。
1、fopen函数
#include <stdio.h>FILE *fopen(const char *filename, const char *mode);
与底层文件访问中的open相对应。调用成功时返回一个非空的FILE指针,失败时返回NULL值。
2、fread函数及fwrite函数
#include <stdio.h>size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream);
与底层访问中的read及write相对应。其中size参数指定每个记录的长度,计数器nitems给出要传输的记录数,返回成功读到缓冲区中的记录个数或成功写入的记录个数。
3、fclose函数及fflush函数
#include <stdio.h>int fclose(FILE *stream);int fflush(FILE *stream);fclose关闭文件流,在每次关闭之前都会调用fflush,把文件流里的所有未写出的数据立即写出。
4、fseek函数
#include <stdio.h>int fseek(FILE *stream, ong int offset, int whence);与底层文件访问中的lseek相对应,在文件流里为下一次读写操作指定位置。成功时返回0,失败时返回-1并设置errorn的值。
5、fgetc、getc和getchar函数
#include <stdio.h>int fgetc(FILE *stream);int getc(FILE *stream);int getchar();从输入流(文件流或标准输入)里取出下一个字节并作为一个字符返回。
6、fputc、putc和putchar函数
#include <stdio.h>int fputc(int c, FILE *stream);int putc(int c, FILE *stream);int putchar(int c);把一个字符写入输出流中(文件流或标准输出流)。
7、fgets和gets函数
#include <stdio.h>char *fgets(char *s, int n, FILE *stream);char *gets(char *s);fgets文件流中读取n-1个字符写入s中,并在s的最后加上空字节结束字符串。
gets人标准输入流读取数据并丢弃遇到的换行符,并在接收字符的末尾加上一个null字节。
8、格式化输入和输出
格式化输入和输出函数包括printf、fprintf、sprintf、scanf、fscanf和sscanf。这些函数根据格式化字符串指定的格式完成输入输出操作。
在底层文件访问中可以轻松实现文件的复制,利用标准的输入输出可以简化代码,实现逐个字符的文件复制。
#include <stdio.h>int main(){int c;FILE *in, *out;in = fopen("file.in", "r");out = fopen("file.out", "w");while((c = fgetc(in)) != EOF)fputc(c, out);return 0;}上述程序复制1MB文件的测试信息如下:
0.03user 0.02system 0:00.06elapsed 87%CPU (0avgtext+0avgdata 1584maxresident)k
0inputs+2112outputs (0major+137minor)pagefaults 0swaps
因此利用标准输入输出提供的缓冲机制,即使是单个字符的文件复制,在效率上相对底层文件访问形式的单个字符复制有很大提高。但是我们也要意识到标准输入输出函数也存在着安全问题,比如scanf函数的实现就存在漏洞,因此对这些输入输出函数的应用也有选择性。
- Linux程序设计——文件操作(标准I/O库)
- Linux 文件操作——系统调用和标准I/O库
- Linux 文件操作——系统调用和标准I/O库
- Linux 文件操作——系统调用和标准I/O库
- Linux 文件操作——系统调用和标准I/O库
- Linux学习总结(四)——标准I/O与文件I/O
- 标准文件I/O操作
- linux文件操作-标准I/O操作--fgets与gets
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O(尹成清华毕业生)
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O
- Linux系统编程(1)——文件与I/O之C标准I/O函数与系统调用I/O
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- 浅谈无缓存I/O操作和标准I/O文件操作区别(转)
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- 浅谈无缓存I/O操作和标准I/O文件操作区别 (转载)
- Oracle Merge Into 的用法详解实例
- 算法系列之九:计算几何与图形学有关的几种常用算法(二)
- IMP命令使用说明
- 值得借鉴的 异常捕获体系 (二)
- Android中实现应用程序的多语言版本
- Linux程序设计——文件操作(标准I/O库)
- 算法系列之十:直线生成算法
- JQgrid使用
- oracle 连接
- 关于使用Proguard 所要注意的问题
- 算法系列之十一:圆生成算法
- snprintf事例
- 文件操作(文件系统设计项目总结)
- css实现透明度(兼容IE6、IE7、Firefox2.0)