`

C语言文件操作函数大全

 
阅读更多

C语言文件操作函数大全

clearerr(清除文件流的错误旗标) 
相关函数 feof
表头文件 #include<stdio.h> 
定义函数 void clearerr(FILE * stream); 
函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。 
返回值 
  
fclose(关闭文件) 
相关函数 close,fflush,fopen,setbuf 
表头文件 #include<stdio.h> 
定义函数 int fclose(FILE * stream); 
函数说明 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。 
返回值 若关文件动作成功则返回0,有错误发生时则返回EOF并把错误代码存到errno。 
错误代码 EBADF表示参数stream非已打开的文件。 
范例 请参考fopen()。
  
fdopen(将文件描述词转为文件指针) 
相关函数 fopen,open,fclose 
表头文件 #include<stdio.h> 
定义函数 FILE * fdopen(int fildes,const char * mode); 
函数说明 fdopen()会将参数fildes 的文件描述词,转换为对应的文件指针后返回。参数mode 字符串则代表着文件指针的流形态,此形态必须和原先文件描述词读写模式相同。关于mode 字符串格式请参考fopen()。 
返回值 转换成功时返回指向该流的文件指针。失败则返回NULL,并把错误代码存在errno中。
范例 
#include<stdio.h>
main()
{
FILE * fp =fdopen(0,”w+”);
fprintf(fp,”%s/n”,”hello!”);
fclose(fp);
}

执行 hello!

feof(检查文件流是否读到了文件尾) 
相关函数 fopen,fgetc,fgets,fread 
表头文件 #include<stdio.h> 
定义函数 int feof(FILE * stream); 
函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。 
返回值 返回非零值代表已到达文件尾。
  
fflush(更新缓冲区) 
相关函数 write,fopen,fclose,setbuf 
表头文件 #include<stdio.h> 
定义函数 int fflush(FILE* stream); 
函数说明 fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream为NULL,fflush()会将所有打开的文件数据更新。 
返回值 成功返回0,失败返回EOF,错误代码存于errno中。 
错误代码 EBADF 参数stream 指定的文件未被打开,或打开状态为只读。其它错误代码参考write()。
  
fgetc(由文件中读取一个字符) 
相关函数 open,fread,fscanf,getc 
表头文件 include<stdio.h> 
定义函数 nt fgetc(FILE * stream); 
函数说明 fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。 
返回值 getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 
范例
#include<stdio.h>
main()
{
FILE *fp;
int c;
fp=fopen(“exist”,”r”);
while((c=fgetc(fp))!=EOF)
printf(“%c”,c);
fclose(fp);
}

fgets(由文件中读取一字符串) 
相关函数 open,fread,fscanf,getc 
表头文件 include<stdio.h> 
定义函数 har * fgets(char * s,int size,FILE * stream); 
函数说明 fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。 
返回值 gets()若成功则返回s指针,返回NULL则表示有错误发生。 
范例 
#include<stdio.h>
main()
{
char s[80];
fputs(fgets(s,80,stdin),stdout);
}

执行 this is a test /*输入*/
this is a test /*输出*/

  
fileno(返回文件流所使用的文件描述词) 
相关函数 open,fopen 
表头文件 #include<stdio.h> 
定义函数 int fileno(FILE * stream); 
函数说明 fileno()用来取得参数stream指定的文件流所使用的文件描述词。 
返回值 返回文件描述词。
范例 
#include<stdio.h>
main()
{
FILE * fp;
int fd;
fp=fopen(“/etc/passwd”,”r”);
fd=fileno(fp);
printf(“fd=%d/n”,fd);
fclose(fp);
}

执行 fd=3

  
fopen(打开文件) 
相关函数 open,fclose 
表头文件 #include<stdio.h> 
定义函数 FILE * fopen(const char * path,const char * mode); 
函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask值。 
返回值 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL,并把错误代码存在errno 中。 
附加说明 一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()后请作错误判断及处理。 
范例
#include<stdio.h>
main()
{
FILE * fp;
fp=fopen(“noexist”,”a+”);
if(fp= =NULL) return;
fclose(fp);
}

fputc(将一指定字符写入文件流中) 
相关函数 fopen,fwrite,fscanf,putc 
表头文件 #include<stdio.h> 
定义函数 int fputc(int c,FILE * stream); 
函数说明 fputc 会将参数c 转为unsigned char 后写入参数stream 指定的文件中。 
返回值 fputc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。 
范例 
#include<stdio.h>
main()
{
FILE * fp;
char a[26]=”abcdefghijklmnopqrstuvwxyz”;
int i;
fp= fopen(“noexist”,”w”);
for(i=0;i<26;i++)
fputc(a
,fp);
fclose(fp);
}

fputs(将一指定的字符串写入文件内) 
相关函数 fopen,fwrite,fscanf,fputc,putc 
表头文件 #include<stdio.h> 
定义函数 int fputs(const char * s,FILE * stream); 
函数说明 fputs()用来将参数s所指的字符串写入到参数stream所指的文件内。 
返回值 若成功则返回写出的字符个数,返回EOF则表示有错误发生。 
范例 请参考fgets()。 
fread(从文件流读取数据) 
相关函数 fopen,fwrite,fseek,fscanf 
表头文件 #include<stdio.h> 
定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream); 
函数说明 fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。
返回值 返回实际读取到的nmemb数目。 
附加说明 
范例 
#include<stdio.h>
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
int 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
.name,i,s.size);
}

执行
name[0]=Linux! size[0]=6
name[1]=FreeBSD! size[1]=8
name[2]=Windows2000 size[2]=11

 
freopen(打开文件) 
相关函数 fopen,fclose 
表头文件 #include<stdio.h> 
定义函数 FILE * freopen(const char * path,const char * mode,FILE * stream); 
函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode请参考fopen()说明。参数stream为已打开的文件指针。Freopen()会将原stream所打开的文件流关闭,然后打开参数path的文件。 
返回值 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
范例 
#include<stdio.h>
main()
{
FILE * fp;
fp=fopen(“/etc/passwd”,”r”); 
fp=freopen(“/etc/group”,”r”,fp);
fclose(fp);
}

fseek(移动文件流的读写位置) 
相关函数 rewind,ftell,fgetpos,fsetpos,lseek 
表头文件 #include<stdio.h> 
定义函数 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); 
返回值 当调用成功时则返回0,若有错误则返回-1,errno会存放错误代码。 
附加说明 fseek()不像lseek()会返回读写位置,因此必须使用ftell()来取得目前读写的位置。
范例
#include<stdio.h>
main()
{
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);
}

执行 offset = 5
offset =0
offset=10

  
ftell(取得文件流的读取位置) 
相关函数 fseek,rewind,fgetpos,fsetpos 
表头文件 #include<stdio.h> 
定义函数 long ftell(FILE * stream); 
函数说明 ftell()用来取得文件流目前的读写位置。参数stream为已打开的文件指针。 
返回值 当调用成功时则返回目前的读写位置,若有错误则返回-1,errno会存放错误代码。 
错误代码 EBADF 参数stream无效或可移动读写位置的文件流。
范例 参考fseek()。
  
fwrite(将数据写至文件流) 
相关函数 fopen,fread,fseek,fscanf 
表头文件 #include<stdio.h> 
定义函数 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream); 
函数说明 fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。 
返回值 返回实际写入的nmemb数目。
范例 
#include<stdio.h>
#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
main()
{
FILE * stream;
set_s(0,”Linux!”);
set_s(1,”FreeBSD!”);
set_s(2,”Windows2000.”);
stream=fopen(“/tmp/fwrite”,”w”);
fwrite(s,sizeof(struct test),nmemb,stream);
fclose(stream);
}

执行 参考fread()。
  
getc(由文件中读取一个字符) 
相关函数 read,fopen,fread,fgetc 
表头文件 #include<stdio.h> 
定义函数 int getc(FILE * stream); 
函数说明 getc()用来从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。虽然getc()与fgetc()作用相同,但getc()为宏定义,非真正的函数调用。 
返回值 getc()会返回读取到的字符,若返回EOF则表示到了文件尾。 
范例 参考fgetc()。
  
getchar(由标准输入设备内读进一字符) 
相关函数 fopen,fread,fscanf,getc 
表头文件 #include<stdio.h> 
定义函数 int getchar(void); 
函数说明 getchar()用来从标准输入设备中读取一个字符。然后将该字符从unsigned char转换成int后返回。 
返回值 getchar()会返回读取到的字符,若返回EOF则表示有错误发生。 
附加说明 getchar()非真正函数,而是getc(stdin)宏定义。
范例 
#include<stdio.h>
main()
{
FILE * fp;
int c,i;
for(i=0li<5;i++)
{
c=getchar();
putchar(c);
}
}

执行 1234 /*输入*/
1234 /*输出*/

gets(由标准输入设备内读进一字符串) 
相关函数 fopen,fread,fscanf,fgets 
表头文件 #include<stdio.h> 
定义函数 char * gets(char *s); 
函数说明 gets()用来从标准设备读入字符并存到参数s所指的内存空间,直到出现换行字符或读到文件尾为止,最后加上NULL作为字符串结束。 
返回值 gets()若成功则返回s指针,返回NULL则表示有错误发生。 
附加说明 由于gets()无法知道字符串s的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓冲溢出的安全性问题。建议使用fgets()取代。 
范例 参考fgets()
  
mktemp(产生唯一的临时文件名) 
相关函数 tmpfile 
表头文件 #include<stdlib.h> 
定义函数 char * mktemp(char * template); 
函数说明 mktemp()用来产生唯一的临时文件名。参数template所指的文件名称字符串中最后六个字符必须是XXXXXX。产生后的文件名会借字符串指针返回。 
返回值 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。
附加说明 参数template所指的文件名称字符串必须声明为数组,如:
char template[ ]=”template-XXXXXX”;
不可用char * template=”template-XXXXXX”;
范例 
#include<stdlib.h>
main()
{
char template[ ]=”template-XXXXXX”;
mktemp(template);
printf(“template=%s/n”,template);
}

 
putc(将一指定字符写入文件中) 
相关函数 fopen,fwrite,fscanf,fputc 
表头文件 #include<stdio.h> 
定义函数 int putc(int c,FILE * stream); 
函数说明 putc()会将参数c转为unsigned char后写入参数stream指定的文件中。虽然putc()与fputc()作用相同,但putc()为宏定义,非真正的函数调用。 
返回值 putc()会返回写入成功的字符,即参数c。若返回EOF则代表写入失败。 
范例 参考fputc()。
  
putchar(将指定的字符写到标准输出设备) 
相关函数 fopen,fwrite,fscanf,fputc 
表头文件 #include<stdio.h> 
定义函数 int putchar (int c); 
函数说明 putchar()用来将参数c字符写到标准输出设备。 
返回值 putchar()会返回输出成功的字符,即参数c。若返回EOF则代表输出失败。 
附加说明 putchar()非真正函数,而是putc(c,stdout)宏定义。 
范例 参考getchar()。
 
rewind(重设文件流的读写位置为文件开头) 
相关函数 fseek,ftell,fgetpos,fsetpos 
表头文件 #include<stdio.h> 
定义函数 void rewind(FILE * stream); 
函数说明 rewind()用来把文件流的读写位置移至文件开头。参数stream为已打开的文件指针。此函数相当于调用fseek(stream,0,SEEK_SET)。
返回值 
范例 参考fseek()

setbuf(设置文件流的缓冲区) 
相关函数 setbuffer,setlinebuf,setvbuf 
表头文件 #include<stdio.h> 
定义函数 void setbuf(FILE * stream,char * buf); 
函数说明 在打开文件流后,读取内容之前,调用setbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址。如果参数buf为NULL指针,则为无缓冲IO。Setbuf()相当于调用:setvbuf(stream,buf,buf?_IOFBF:_IONBF,BUFSIZ) 
返回值 
  
setbuffer(设置文件流的缓冲区) 
相关函数 setlinebuf,setbuf,setvbuf 
表头文件 #include<stdio.h> 
定义函数 void setbuffer(FILE * stream,char * buf,size_t size); 
函数说明 在打开文件流后,读取内容之前,调用setbuffer()可用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小。 
返回值 

setlinebuf(设置文件流为线性缓冲区) 
相关函数 setbuffer,setbuf,setvbuf 
表头文件 #include<stdio.h> 
定义函数 void setlinebuf(FILE * stream); 
函数说明 setlinebuf()用来设置文件流以换行为依据的无缓冲IO。相当于调用:setvbuf(stream,(char * )NULL,_IOLBF,0);请参考setvbuf()。 
返回值 

setvbuf(设置文件流的缓冲区) 
相关函数 setbuffer,setlinebuf,setbuf 
表头文件 #include<stdio.h> 
定义函数 int setvbuf(FILE * stream,char * buf,int mode,size_t size); 
函数说明 在打开文件流后,读取内容之前,调用setvbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,参数buf指向自定的缓冲区起始地址,参数size为缓冲区大小,参数mode有下列几种
_IONBF 无缓冲IO
_IOLBF 以换行为依据的无缓冲IO
_IOFBF 完全无缓冲IO。如果参数buf为NULL指针,则为无缓冲IO。 
返回值 

ungetc(将指定字符写回文件流中) 
相关函数 fputc,getchar,getc 
表头文件 #include<stdio.h> 
定义函数 int ungetc(int c,FILE * stream); 
函数说明 ungetc()将参数c字符写回参数stream所指定的文件流。这个写回的字符会由下一个读取文件流的函数取得。 
返回值 成功则返回c 字符,若有错误则返回EOF。
分享到:
评论

相关推荐

    C语言文件操作函数大全(详细讲解)

    C语言文件操作函数大全 C语言文件操作函数大全是指在C语言中对文件进行各种操作的函数集合,包括文件的打开、关闭、读取、写入、追加等操作。这些函数是C语言编程中非常重要的一部分,掌握这些函数可以帮助程序员更...

    常用C语言文件操作函数大全.doc

    C语言文件操作函数大全 C语言中文件操作函数是指程序中对文件进行读、写、关闭、检测等操作的函数。这些函数都是C语言标准库stdio.h中的一部分,用于实现文件的输入/输出操作。 1. clearerr() 函数 函数说明:...

    C语言文件操作函数大全.doc

    这里我们详细讨论几个重要的C语言文件操作函数。 1. `clearerr()` 函数:这个函数用于清除文件流的错误标志。当你调用`clearerr(stream)`时,它会将指定文件流`stream`的错误状态清零,这意味着之后的文件操作将...

    C语言文件操作函数大全.chm

    顾名思义,主要介绍C语言的文件操作函数,无须多言

    C语言文件操作函数大全1[汇编].pdf

    C语言文件操作函数大全1[汇编].pdf

    常用C语言文件操作函数大全1

    本文主要介绍了一些常见的C语言文件操作函数,包括`clearerr`、`fclose`、`fdopen`、`feof`、`fflush`、`fgetc`和`fgets`。 1. `clearerr()`:这个函数用于清除指定文件流的错误标志。当文件操作遇到问题时,C语言...

    c语言文件操作函数

    C语言文件操作函数是C语言标准库中用于进行文件读写、控制和管理的一组函数,这些函数为程序提供了访问和操作磁盘文件的能力。在进行C语言文件操作时,通常要涉及到几个基本步骤,包括打开文件、读写文件、关闭文件...

    C语言文件操作函数的封装

    以下是对C语言文件操作函数封装的一些关键知识点的详细说明: 1. **文件打开与关闭**: - `fopen()` 函数用于打开一个文件,接受文件名和模式作为参数,如 "r"(读)、"w"(写)、"a"(追加)等。 - 返回一个指向...

    C语言文件操作及函数大全.doc

    本文将基于“C语言文件操作及函数大全”文档,深入解析C语言中的文件操作概念、分类以及具体操作方法,帮助读者更好地理解和运用C语言中的文件处理技巧。 #### 文件的概念与分类 在C语言中,文件被视为一组相关...

    C语言函数中文说明大全系列.rar_C语言_C语言函数大全_头 函数

    在"Turbo C 2.0 函数中文说明大全系列.txt"这个文件中,可能会详细列出每个函数的原型、参数、返回值和使用示例,这对于初学者来说是非常宝贵的参考资料。同时,"www.pudn.com.txt"可能包含了更多关于这个资源的来源...

    C语言文件操作函数大全(超详细)

    fopen(打开文件)相关函数 open,fclose表头文件 #include定义函数 FILE * fopen&#40;const char * path,const char * mode&#41;;函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流...

    c语言函数大全 所有函数

    7. **文件操作函数**: - `fopen()`:打开文件。 - `fclose()`:关闭文件。 - `fprintf()` 和 `fscanf()`:文件的格式化输入和输出。 - `feof()`:检查文件是否到达末尾。 - `ftell()`:获取文件当前的读写位置...

    C语言全套资料 C语言程序设计 C语言算法 C语言课件 C语言顺序程序设计,C语言数组,C语言循环控制,C语言预处理命令,C语言文件操作指针,C语言选择结构程序设计,C语言结构体与共用体,C语言文件操作,C语言函数

    8. **C语言文件操作**:C语言提供了标准I/O库来读写文件,学习者将学会如何打开、关闭文件,以及如何读取和写入数据。 9. **C语言指针**:指针是C语言的精髓,它们允许直接操作内存地址,提供高效的数据操作和复杂...

    C语言函数大全.txt

    5. 文件操作函数:`fopen()`打开文件,`fclose()`关闭文件,`fread()`和`fwrite()`读写文件内容,`fprintf()`和`fscanf()`在文件中格式化输入输出。 6. 字符串处理函数:`strcpy()`复制字符串,`strcat()`连接字符...

    C语言函数大全(语法着色版)

    6. **文件操作函数**:`fopen`、`fclose`、`fread`、`fwrite`、`fprintf`等用于文件的打开、关闭、读写和格式化输出。 7. **控制流函数**:`if`、`else`、`switch`、`for`、`while`等控制流程结构,以及`return`、`...

    C语言文件操作思维导图及实例代码

    本资源" C语言文件操作思维导图及实例代码 "提供了关于C语言文件操作的清晰概览和实践示例,这对于初学者和进阶者来说都是宝贵的资料。 C语言中的文件操作主要包括以下知识点: 1. **文件流与文件指针**:在C语言...

    C语言编程常用函数大全

    文件操作也是C语言中的重要组成部分,`fopen()` 打开文件,`fclose()` 关闭文件,`fprintf()` 和 `fscanf()` 分别是 `printf()` 和 `scanf()` 的文件版本,`fread()` 和 `fwrite()` 用于读写二进制数据,`feof()` ...

    C语言函数大全 C语言函数大全

    "C语言函数大全"这个资源可能是一个包含C语言所有标准库函数的参考手册或者电子书,以`.CHM`(Microsoft帮助文件)格式提供。这种类型的文件通常包含详细的函数说明、参数列表、返回值以及使用示例。 在C语言中,...

Global site tag (gtag.js) - Google Analytics