库函数主要有fopen、fclose、fread、fwrite、fprintf、fscanf等函数。
fopen函数:
表头文件: #include<stdio.h>
定义函数: FILE * fopen(const char * path,const char * mode);
函数说明: 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态,mode有下列几种字符串。
R:打开只读文件,该文件必须存在。
r+:打开可读写的文件,该文件必须存在。
w:打开只写文件,若文件存在则文件长度清0,即该文件内容会消失;若文件不存在则建立该文件
w+:打开可读写文件,若文件存在则文件长度清0,即该文件内容会消失;若文件不存在则建立该文件。
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中。
fclose函数:
表头文件:#include<stdio.h>
定义函数:int fclose(FILE * stream);
函数说明: fclose( )用来关闭先前fopen( )打开的文件,此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源
返回值: 若关文件动作成功则返回0;有错误发生时则返回EOF并把错误代码存到errno。
fread函数:
表头文件:#include<stdio.h>
定义函数:size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);
函数说明:fread( )用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr指向欲存放读取进来的数据空间,读取的字符数由参数nmemb来决定。fread( )会返回实际读取到的nmemb数目,如果此值比参数nmemb小,则代表可能读到了文件尾或有错误发生,这时必须用feof( )或ferror( )来判定发生什么情况
返回值:返回实际读取到的nmemb数目
fwrite函数:
表头文件: #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数目
fseek函数:
表头文件:#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允许负值的出现。
下列是较特别的使用方式:
欲将读写位置移动到文件开头时,fseek(FILE * stream,0,SEEK_SET);
欲将读写位置移动到文件尾时,fseek(FILE * stream,0,0SEEK_END);
返回值: 当调用成功时则返回0;若有错误则返回-1,errno会存放错误代码。
fgetc函数:
表头文件: #include<stdio.h>
定义函数 :int fgetc(FILE * stream);
函数说明 :fgetc( )用来从参数stream所指的文件中读取一个字符;若读到文件尾而无数据时便返回EOF
返回值 :fgetc( )会返回读取到的字符;若返回EOF则表示到了文件尾
getc函数:
表头文件 : #include<stdio.h>
定义函数 : int getc(FILE * stream);
函数说明 : getc( )用来从参数stream所指的文件中读取一个字符;若读到文件尾而无数据时便返回EOF。虽然getc( )与fgetc( )作用相同,但getc( )为宏定义,非真正的函数调用
返回值 : getc( )会返回读取到的字符;若返回EOF则表示到了文件尾
getchar函数:
表头文件: #include<stdio.h>
定义函数 :int getchar(void);
函数说明: getchar( )用来从标准输入设备中读取一个字符;然后将该字符从unsigned char转换成int后返回
返回值 :getchar( )会返回读取到的字符;若返回EOF则表示有错误发生
fputc函数:
表头文件:#include<stdio.h>
定义函数:int fputc(int c,FILE * stream);
函数说明:fputc将参数c转为unsigned char后写入参数stream指定的文件中
返回值: fputc( )返回写入成功的字符,即参数c;若返回EOF则代表写入失败
putc函数:
表头文件:#include<stdio.h>
定义函数 : int putc(int c,FILE * stream);
函数说明 : putc( )将参数c转为unsigned char后写入参数stream指定的文件中。虽然putc( )与fputc( )作用相同,但putc( )为宏定义,非真正的函数调用
返回值: putc( )返回写入成功的字符,即参数c;若返回EOF则代表写入失败
putchar函数:
表头文件:#include<stdio.h>
定义函数:int putchar (int c);
函数说明:putchar( )用来将参数c字符写到标准输出设备
返回值:putchar( )返回输出成功的字符,即参数c;若返回EOF则代表输出失败
fprintf函数:
表头文件:#include<stdio.h>
定义函数: int fprintf(FILE * stream, const char * format,……);
函数说明: fprintf( )会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定的文件中,直到出现字符串结束(\0)为止
返回值:关于参数format字符串的格式请参考printf( )。成功则返回实际输出的字符数,失败则返回-1,错误原因存于errno中
下面用一个程序来看一下各个函数的具体用法: