C语言中对文件的操作,是很重要的,今天我首先对对文件进行操作的函数进行整理学习
1. fread:
原型:size_t fread(void * buffer,size_t size,size_t count,FILE *stream)
参数: buffer:接收数据的内存地址
size:要读取的每个数据项的字节数
count:要读取的数据项的个数
stream:输入流
返回值:真实写入的项数,若大于count的数值则产生错误则返回0.
功能:从一个文件流中读取数据,以块的形式读取大量数据,可读取count个数据项,每个项有size个字节,调用成功返回count的数值,不成功或者读到文件末尾返回0。
头文件:stdio.h
示例:fread(buf,1,strlen(address),stream);
2. fwrite:
原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
参数:buffer:指针,用于表示要获取数据的地址
size:要写入内容的单字节数
count:要写入的数据项的个数
stream:目标文件指针
返回值:实际写入的数据项个数count
功能:向所指向的文件写一个数据块
头文件:stdio.h
注意点:1)可以二进制形式对文件进行操作,不局限于文本文件。
2)如果文件打开模式是w+,是从文件指针指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数
3)如果文件打开模式是a+,则从文件的末尾开始添加,文件长度加大
4) 该函数是写到了用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
示例:
fwrite(buf,sizeof(Address)1,fp);
3. fgetc:
原型:char *fgets(char *buf, int bufsize, FILE *stream);
参数:buf:字符型指针,指向用来存储所得数据的地址
bufsize:整型数据,指明存储数据的大小
stream:文件结构体指针,将要读取的文件流
返回值:成功则返回buf,失败或读到文件结尾返回NULL
功能:从文件中读取字符串,
读取一行数据,读取的数据保存在buf指向的字符数组,最多一次读取bufsize个字符(第bufsize个字符’\0’)。
头文件:stdio.h
注意点:
1) 不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof()或者ferror()来判断。
2) 读取指定大小的数据,可以避免gets()从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题
示例: fgets(buf,strlen(string),fp);
4. fputs:
原型:int fputs(const char * s,FILE * stream)
参数:str: 字符型指针,可以是字符串常量,或者存放字符串的数组首地
fp:文件指针
返回值:若成功则返回写出的字符个数,返回EOF则表示有错误发生
功能:向指定文件的文件写入一个字符串
头文件:stdio.h
示例:fputs(str,fp);
5. fgetc:
原型:int fgetc(FILE *stream)
参数:stream:文件指针
返回值:成功则返回读取到的字符,到达文件尾或者错误则返回EOF,上述的两种情况需要通过ferror()或feof()来区分
功能:从文件中读取一个字符
头文件:stdio.h
示例:fgetc(fp);
6. fputc:
原型:int fputc (char c, File *fp)
参数:c:字符
fp:文件指针,
返回值:在正常调用情况下,函数返回写入文件的字符的ASCII码值,出错时,返回EOF(-1)
功能:将字符ch写到文件指针fp所指向的文件的当前写指针的位置
头文件:stdio.h
示例:fputc(s[i],f);
1. fread:
原型:size_t fread(void * buffer,size_t size,size_t count,FILE *stream)
参数: buffer:接收数据的内存地址
size:要读取的每个数据项的字节数
count:要读取的数据项的个数
stream:输入流
返回值:真实写入的项数,若大于count的数值则产生错误则返回0.
功能:从一个文件流中读取数据,以块的形式读取大量数据,可读取count个数据项,每个项有size个字节,调用成功返回count的数值,不成功或者读到文件末尾返回0。
头文件:stdio.h
示例:fread(buf,1,strlen(address),stream);
2. fwrite:
原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
参数:buffer:指针,用于表示要获取数据的地址
size:要写入内容的单字节数
count:要写入的数据项的个数
stream:目标文件指针
返回值:实际写入的数据项个数count
功能:向所指向的文件写一个数据块
头文件:stdio.h
注意点:1)可以二进制形式对文件进行操作,不局限于文本文件。
2)如果文件打开模式是w+,是从文件指针指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数
3)如果文件打开模式是a+,则从文件的末尾开始添加,文件长度加大
4) 该函数是写到了用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
示例:
fwrite(buf,sizeof(Address)1,fp);
3. fgetc:
原型:char *fgets(char *buf, int bufsize, FILE *stream);
参数:buf:字符型指针,指向用来存储所得数据的地址
bufsize:整型数据,指明存储数据的大小
stream:文件结构体指针,将要读取的文件流
返回值:成功则返回buf,失败或读到文件结尾返回NULL
功能:从文件中读取字符串,
读取一行数据,读取的数据保存在buf指向的字符数组,最多一次读取bufsize个字符(第bufsize个字符’\0’)。
头文件:stdio.h
注意点:
1) 不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof()或者ferror()来判断。
2) 读取指定大小的数据,可以避免gets()从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题
示例: fgets(buf,strlen(string),fp);
4. fputs:
原型:int fputs(const char * s,FILE * stream)
参数:str: 字符型指针,可以是字符串常量,或者存放字符串的数组首地
fp:文件指针
返回值:若成功则返回写出的字符个数,返回EOF则表示有错误发生
功能:向指定文件的文件写入一个字符串
头文件:stdio.h
示例:fputs(str,fp);
5. fgetc:
原型:int fgetc(FILE *stream)
参数:stream:文件指针
返回值:成功则返回读取到的字符,到达文件尾或者错误则返回EOF,上述的两种情况需要通过ferror()或feof()来区分
功能:从文件中读取一个字符
头文件:stdio.h
示例:fgetc(fp);
6. fputc:
原型:int fputc (char c, File *fp)
参数:c:字符
fp:文件指针,
返回值:在正常调用情况下,函数返回写入文件的字符的ASCII码值,出错时,返回EOF(-1)
功能:将字符ch写到文件指针fp所指向的文件的当前写指针的位置
头文件:stdio.h
示例:fputc(s[i],f);