c 文件操作函数
来源:互联网 发布:从零开始学mt4编程 编辑:程序博客网 时间:2024/04/25 21:37
缓冲flush函数
1.int fflush(FILE* stream) // 清空缓冲流
fflush (NULL) //清空所有输出流和上面提到的更新流
2.int setvbuf( FILE *stream,
char* buf, //缓冲区的地址
int mode, //缓冲区的类型
size_t size ) // 缓冲区内字节的数量
缓冲区的类型:
_IOFBF(满缓冲):当缓冲区为空时,从流读入数据。或者当缓冲区满时,向流写入数 据。
_IOLBF(行缓冲):每次从流中读入一行数据或向流中写入一行数据。
_IONBF(无缓冲):直接从流中读入数据或直接向流中写入数据,而没有缓冲区。
if (setvbuf(input, bufr, _IOFBF, 512) != 0)
是设置 input这个文件流使用 bufr 所指的512个字节作为 input文件的buffer,
当你操作input文件时,数据都会暂存在 bufr 里面,每次读input时,
系统会一次性读512字节到bufr里暂存。
3.void setbuf( FILE* stream,
char* buf ) //参数buf必须指向一个长度为BUFSIZ(定义在stdio.h头文件中)的缓冲区
为了关闭缓冲,可以将buf参数设置为NULL
等价于( void )setvbuf( stream, buf, _IOFBF, BUFSIZ ).
setbuf(stdout,outbuf);//将输出流绑定到outbuf上
文件指针
1.rewind(fp); //回到文件开始处
文件起始点的模式:
SEEK_SRT 文件开始
SEEK_CUR 当前位置
SEEK_END 文件结尾
2.int fseek(FILE *stream, long offset, int fromwhere);
fseek(fp, 0L, SEEK_SET); // 找到文件的开始处
fseek(fp, 10L, SEEK_SET); // 找到文件的第11个字节
fseek(fp, 2L, SEEK_CUR); // 从文件的当前位置向前移动2个字节
fseek(fp, 0L, SEEK_END); // 到达文件结尾处
fseek(fp, -10L, SEEK_END); // 从文件结尾处退回10个字节
3.ftell(fp); //返回当前文件的指针
ftell() 和 fseek() 用长整型表示文件内的偏移 (位置),因此它们限制文件的大小只能在 long类型
的表示范围之内。而新的 fgetpos() 和 fsetpos() 函数使用了一个特殊的类型定义
fpos_t 来表示偏移量。这个类型会适当选择, 因此, fgetpos() 和 fsetpos 可以表示任
意大小的文件偏移。
int fsetpos(FILE * stream, const fpos_t * pos); //将文件指针定位在pos指定的位置上
FILE *fp;
fpos_t pos = 90;
if( fsetpos( fp, &pos ) != 0 )
perror( "fsetpos error" );
else
{ ....
}
fclose(fp);
int fgetpos(FILE * restrict stream, fpos_t * restrict pos);//取得当前文件的句柄
FILE *fp;
fpos_t pos ;
fgetpos(stream, &filepos);
printf("The file pointer is at byte\
%ld\n", filepos);
fclose(fp);
字符读写:
1.int fgetc( FILE* stream ); // 从文件读入一个字符
char ch;
while((ch=fgetc(stdin))!=EOF)
{//...
}
2.int fputc( int ch, FILE* stream ); // 写入一个字符到文件
字符串读写:
1.char* fgets( char* _Buf, //要从文件中读入字符串的存放空间
int _MaxCount, //最大读取字节数
FILE* _File ) //文件指针
char string[215]
fgets(string,strlen(string), stream);
3.int fputs( const char* _Str, //要写入文件的字符串
FILE* _File ) //文件指针
fputs(str,fp);
格式化数据读写:
1、int fprintf( FILE* _File, const char* _Format, ... );
fprintf() 与printf() 相似 但需要第一个 FILE 指针参数来指定要操作的文件
fprintf(stdout, "a.s\n"); 等同与 printf("a.s\n");
2、int fscanf( FILE* _File, const char* _Format, ... );
fscanf() 与scanf() 相似 但需要第一个 FILE 指针参数来指定要操作的文件
fcanf(stdin, "%s", a); 等同与 scanf("%s", a);
文件数据块读写:
1.打开文件
FILE * fp;
char fname[33] = "文件名";
if((fp = fopen(fname, "r")) != NULL) // 如果成功打开文件
{
printf("open fname failed!\n");
}
fclose(fp); // 关闭fp指向的文件
fopen的打开方式有:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在先将文件长度截为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存先将文件长度截为0,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
rb,wb,ab,r+b,w+b,a+b,rb+,wb+,ab+
与前面的模式相似,只是使用二进制模式而非文本模式
2.写文件
char arr[256];
fwrite(arr, strlen(arr), 1, fp);
或者
double ent[10];
fwrite(ent, sizeof(double), 10, fp);
size_t fwrite
(
const void *buffer, // 要写入文件的数据块
size_t size, // 写入文件的字节数
size_t count, // 写入count个size大小的数据
FILE *stream // 文件指针
)
3.读文件
fread(ent, sizeof(double), 10, fp);
size_t fread
(
void * _DstBuf, // 存放从文件读出来的数据
size_t _ElementSize, // 读取字节数
size_t _Count, // 读入次数
FILE * _File // 文件指针
)
- c文件操作函数
- c文件操作函数
- C文件操作函数
- c文件操作函数
- C文件操作函数
- C文件操作函数
- C文件操作函数 .
- C文件操作函数
- c 文件操作函数
- C文件操作函数
- c文件操作函数
- c文件操作函数
- 文件操作--C 函数操作
- C函数文件操作函数
- C语言文件操作函数
- C语言文件操作函数
- C语言文件操作函数
- 文件操作函数 C语言
- iOS开发- 隐藏键盘总结
- java加密算法
- 打标、去标工具。
- IOS Label 自适应高度
- 【温故而知新】C和C++篇外篇:COleVariant类型
- c 文件操作函数
- ROWNUM Pseudocolumn
- 实现一屏幕自适应登陆
- (黑马程序员)学习笔记,枚举
- OCP 1Z0 052 53
- mysql常见优化
- 使用do{ } while(0);
- 另辟思路解决 Android 4.0.4 不能监听Home键的问题
- 一群牛人翻译:The Swift Programming Language 中文版