C语言文件的操作函数很多,包括打开关闭,字符读写,字符串读写,数据块读写,文件定位等。
1、文件打开函数:fp = fopen(“passwd”,“r”);
2、文件关闭函数:fclose(fp);
3、字符读写函数:
ch =fgetc(fp);//读一个字符
fputc(ch,fp);//写一个字符
4、字符串读写函数:
fgets(str,n,fp); //读一个字符串
说明:从fp指向的文件读n-1 个字符,在最后加一个'\0', str为存放数据的首地址.遇到'\n'停止,会把'\n'也读入。
fputs(“china”,fp); //写一个字符串
说明:向指定的文件写一个字符串,第一个参数可以是字符串常量、字符数组名或字符型指针,字符串末尾的'\0'不会写到文件中.
5、数据块读写函数:
fread(buffer,size,count,fp );
buffer:指向存储数据空间的首地址的指针.
size:要读数据的字节数
count:要读多少个size字节的数据
fp:指向要进行读操作的文件
fwrite( buffer,size,count,fp );
buffer:指向存储数据空间的首地址的指针.
size:要写数据的字节数
count:要写多少个size字节的数据
fp:指向要进行写操作的文件
6、格式化读写函数:
fprintf ( 文件指针,格式字符串,输出表列);
fscanf ( 文件指针,格式字符串,输入表列);
a)fscanf、fprintf函数与前面使用的scanf、printf函数的功能相似,都是格式化读写函数.
b)两者的区别在于fscanf、fprintf函数的读写对象不是键盘和显示器,而是磁盘文件.
c)用fprintf、fscanf函数对磁盘文件读写,使用方便,但在输入、输出时需要进行类型转换,消耗较高资源.
d)在内存与磁盘频繁交换数据的情况下,最好不用fprintf和fscanf函数,而用fread和fwrite函数.
注意:
sscanf():本应该从键盘拿东西,现在从一个字符串拿。
sprintf():本应该打印到显示器的东西,现在输出到数组。
注:EOF不是可输出字符,其值为-1,当读入的字符值等于-1时,表示读入的已不是正常的字符而是文件结束符.
扩展部分一:随机读写函数rewind、ftell和fseek
7、rewind函数
定义函数:void rewind(文件指针);
函数功能:把文件内部的位置指针移到文件首
8、ftell函数
定义函数:long ftell(文件指针);
函数功能:取得文件流目前的读写位置.
返回值:返回当前位置,出错时返回-1.
9、fseek函数(一般用于二进制文件)
定义函数:int fseek(文件指针,位移量,起始点);
函数功能:移动文件流的读写位置.
起始点说明:
文件开头SEEK_SET 0
文件当前位置SEEK_CUR 1
文件末尾SEEK_END 2
位移量:以起始点为基点,向前后移动的字节数.一般要求为long型.
函数应用举例
•fseek( fp,100L,0);
将位置指针从文件头移到离文件头100个字节处.
•fseek( fp,50L,1);
将位置指针从当前位置移到离当前50个字节处.
•fseek( fp,-50L,2);
将位置指针从文件尾移到离文件尾50个字节处.
扩展部分二:文件检测函数
10、文件结束检测函数feof
调用格式:feof(文件指针);
功能:判断文件是否处于文件结束位置.
返回值:文件结束返回值为1,否则为0.
11、读写文件出错检测函数ferror
调用格式:ferror(文件指针);
功能:检查文件在用各种输入输出函数进行读写时是否出错.
返回:值为0表示未出错,否则表示有错
12、文件出错标志和文件结束标志置0函数clearerr
调用格式:clearerr(文件指针);
功能:本函数用于清除出错标志和文件结束标志,使它们的值为0。