文件流操作函数
来源:互联网 发布:如何利用蜂窝网络定位 编辑:程序博客网 时间:2024/05/24 01:22
#include<stdio.h>
void clearerr(FILE * stream);
clearerr()清除参数 stream指定的文件流所使用的错误旗标。
int fclose(FILE * stream);
fclose()用来关闭先前 fopen()打开的文件。此动作会让缓冲区
内的数据写入文件中,并释放系统所提供的文件资源。若关文件动作成功则返回 0,有错误发生时则返回 EOF并把错误代码存到 errno
FILE * fdopen(int fildes,const char * mode);
fdopen()会将参数 fildes的文件描述词,转换为对应的文件指针后返回。参数 mode字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于 mode字符串格式请参考 fopen()。
int feof(FILE * stream);
feof()用来侦测是否读取到了文件尾,尾数 stream为 fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回 0。
int fflush(FILE* stream);
fflush()会强迫将缓冲区内的数据写回参数 stream指定的文件中。如果参数 stream为 NULL,fflush()会将所有打开的文件数据更新。成功返回 0,失败返回 EOF,错误代码存于 errno中。
int fgetc(FILE * stream);
fgetc()用来从参数 stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回 EOF。
fgetc()会返回读取到的字符,若返回 EOF则表示到了文件尾。
fp=fopen("exist","r");
while((c=fgetc(fp))!=EOF)
printf("%c",c);
char * fgets(char * s,int size,FILE * stream);
fgets()用来从参数 stream所指的文件内读入字符并存到参数 s所指的内存空间,直到出现换行字符、读到文件尾或是已读了 size-1个字符为止,最后会加上 NULL作为字符串结束。
fgets()若成功则返回 s指针,返回 NULL则表示有错误发生。
fputs(fgets(s,80,stdin),stdout);
int fileno(FILE * stream);
fileno()用来取得参数 stream指定的文件流所使用的文件描述词。
FILE * fp;int fd;fp=fopen("/etc/passwd","r");fd=fileno(fp);printf("fd=%d\n",fd);fclose(fp);
FILE * fopen(const char * path,const char * mode);
函数说明返回值附加说明范例
参数 path字符串包含欲打开的文件路径及文件名,参数 mode字符串则代表着流形态。mode有下列几种形态字符串:
r打开只读文件,该文件必须存在。
r+打开可读写的文件,该文件必须存在。
w打开只写文件,若文件存在则文件长度清为 0,即该文件内容会消失。若文件不存在则建立该文件。
w+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
int fputc(int c,FILE * stream);
fputc会将参数 c转为 unsigned char后写入参数 stream指定的文件中。
fputc()会返回写入成功的字符,即参数 c。若返回 EOF则代表写入失败。
char a[26]="abcdefghijklmnopqrstuvwxyz";int i;fp= fopen("noexist","w");for(i=0;i<26;i++) fputc(a[i],fp);fclose(fp);
int fputs(const char * s,FILE * stream);
fputs()用来将参数 s所指的字符串写入到参数 stream所指的文件内。若成功则返回写出的字符个数,返回 EOF则表示有错误发生。
size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);
fread()用来从文件流中读取数据。参数 stream为已打开的文件指针,参数 ptr指向欲存放读取进来的数据空间,读取的字符数以参数 size*nmemb来决定。fread()会返回实际读取到的 nmemb数目,如果此值比参数 nmemb来得小,则代表可能读到了文件尾或有错误发生,这时必须用 feof()或 ferror()来决定发生什么情况。
返回实际读取到的 nmemb数目。
#define nmemb 3 struct test { char name[20]; int size; }s[nmemb]; void main(){ FILE * stream; int i; stream = fopen("/tmp/fwrite","r"); fread(s,sizeof(struct test),nmemb,stream); fclose(stream); for(i=0;i<nmemb;i++) printf("name[%d]=%-20s:size[%d]=%d\n",i,s[i].name,i,s[i].size); }
FILE * freopen(const char * path,const char * mode,FILE * stream);
参数 path字符串包含欲打开的文件路径及文件名,
参数 mode请参考 fopen()说明,
参数 stream为已打开的文件指针。
freopen()会将原 stream所打开的文件流关闭,然后打开参数 path的文件。
文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回 NULL,并把错误代码存在 errno中。
FILE * fp;fp=fopen("/etc/passwd","r");fp=freopen("/etc/group","r",fp);fclose(fp);
int fseek(FILE * stream,long offset,int whence);
fseek()用来移动文件流的读写位置。
参数 stream为已打开的文件指针,
参数 offset为根据参数whence来移动读写位置的位移数。
参数 whence为下列其中一种:
SEEK_SET从距文件开头 offset位移量为新的读写位置。
SEEK_CUR以目前的读写位置往后增加 offset个位移量。
SEEK_END将读写位置指向文件尾后再增加 offset个位移量。当 whence值为 SEEK_CUR或 SEEK_END时,参数 offset允许负值的出现。下列是较特别的使用方式:
1)欲将读写位置移动到文件开头时:
fseek(FILE *stream,0,SEEK_SET);
2)欲将读写位置移动到文件尾时:
fseek(FILE * stream,0,0SEEK_END);
fseek()不像 lseek()会返回读写位置,因此必须使用 ftell()来取得目前读写的位置。
FILE * stream;long offset;fpos_t pos;stream=fopen("/etc/passwd","r");fseek(stream,5,SEEK_SET);printf("offset=%d\n",ftell(stream));rewind(stream);fgetpos(stream,&pos);printf("offset=%d\n",pos);pos=10;fsetpos(stream,&pos);printf("offset = %d\n",ftell(stream));fclose(stream);
long ftell(FILE * stream);
ftell()用来取得文件流目前的读写位置。参数 stream为已打开的
文件指针。当调用成功时则返回目前的读写位置,若有错误则返回 -1,errno会存放错误代码。
size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);
fwrite()用来将数据写入文件流中。参数 stream为已打开的文件指针,参数 ptr指向欲写入的数据地址,总共写入的字符数以参数 size*nmemb来决定。fwrite()会返回实际写入的 nmemb数目。
返回实际写入的 nmemb数目。
int getc(FILE * stream);
getc()用来从参数 stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回 EOF。虽然 getc()与 fgetc()作用相同,但 getc()为宏定义,非真正的函数调用。
int getchar(void);
getchar()用来从标准输入设备中读取一个字符。然后将该字符从 unsigned char转换成 int后返回。getchar()非真正函数,而是 getc(stdin)宏定义。
char * gets(char *s);
gets()用来从标准设备读入字符并存到参数 s所指的内存空间,直到出现换行字符或读到文件尾为止,最后加上 NULL作为字符串结束。
gets()若成功则返回 s指针,返回 NULL则表示有错误发生。
由于 gets()无法知道字符串 s的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓冲溢出的安全性问题。建议使用 fgets()取代。
int putc(int c,FILE * stream);
putc()会将参数 c转为 unsigned char后写入参数 stream指定的文件中。虽然 putc()与 fputc()作用相同,但 putc()为宏定义,非真正的函数调用。
putc()会返回写入成功的字符,即参数 c。若返回 EOF则代表写入失败。
int putchar (int c);
putchar()用来将参数 c字符写到标准输出设备。
putchar()会返回输出成功的字符,即参数 c。若返回 EOF则代表输出失败。putchar()非真正函数,而是 putc(c,stdout)宏定义。
int atexit (void (*function)(void));
atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用 exit()或从 main中返回时,参数 function所指定的函数会先被调用,然后才真正由 exit()结束程序。
#include<stdlib.h> void my_exit(void) { printf("before exit () !\n"); } void main() { atexit (my_exit); exit(0); }
- 文件流操作函数
- 文件操作函数及文件流详解
- 文件操作--C 函数操作
- C语言文件流操作函数大全
- 文件操作的函数
- 部分文件操作函数
- 文件操作函数
- 文件操作函数
- 文件目录操作函数
- 几个文件操作函数
- 文件操作函数总结
- c文件操作函数
- c文件操作函数
- 文件操作API函数
- C文件操作函数
- Delphi文件操作函数
- 文件操作函数
- 文件操作函数
- 本地连接的图标要等很长时间才出来
- 怀念过去的伤感爱情日志:某一天你是否记得我
- 第四野战军
- 【专题】两种不同的母函数
- 我国网民超过美国达世界第一
- 文件流操作函数
- java.util.Properties 和 ResourceBundle
- “电梯汇报”方法
- 太陽花的伤感空间日志分享:最后哭的人,还是自己
- 升级到IE8后,总是弹出来“Internet Explorer增强安全配置正在阻止来自下列网站的此应用的内容”
- const 成员函数不能改变成员变量的值,但是可以改变成员函数localstack变量的值
- 二叉树的层序遍历
- (百例编程)81.角谷猜想
- 项目开发顺序