1.打开关闭文件
1.1用fopen函数打开数据文件
fopen函数的调用方法为:
fopen(文件名,使用文件方法);
//列如: fopen("al","r");
使用文件方法如下:
文件使用方法 | 含义 | 如果指定的文件不存在 |
---|---|---|
“r”(只读) | 为了输入数据,打开一个已存在的文本文件 | 出错 |
“w”(只写) | 为了输出数据,打开一个文本文件 | 建立新文件 |
“a”(追加) | 向文本文件尾添加数据 | 出错 |
“rb”(只读) | 为了输入数据,打开一个二进制文件 | 出错 |
“wb”(只写) | 为了输入数据,打开一个二进制文件 | 建立新文件 |
“ab”(追加) | 向一个二进制文件尾添加数据 | 出错 |
“r+”(只读) | 为了读和写,打开一个文本文件 | 出错 |
“w+”(只写) | 为了读和写,建立一个新的文本文件 | 建立新文件 |
“a+”(追加) | 为了读和写,打开一个文本文件 | 出错 |
“rb+”(只读) | 为了读和写,打开一个二进制文件 | 出错 |
“wb+”(只写) | 为了读和写,建立一个新二进制文件 | 建立新文件 |
“ab+”(追加) | 为了读写打开一个二进制文件 | 出错 |
1.2用fclose函数关闭数据文件
关闭文件用fclose函数。fclose函数调用的一般形式为
fclose(文件指针);
//列如: fclose(fp);
2.顺序读写数据文件
2.1怎样向文本读写字符
对文本文件读入或输出一个字符的函数
函数名 | 调用形式 | 功能 | 返回值 |
---|---|---|---|
fgetc | fgetc(fp) | 从fp指向的文件读入一个字符 | 读成功,带回所读的字符,失败则返回文件结束标志EOF(即一1) |
fputc | fputc(ch,fp) | 把字符ch写到文件指针变量fp所指向的文件中 | 输出成功,返回值就是输出的字符;输出失败,则返回EOF(即一1) |
2.2怎么向文件读写一个字符串
读写一个字符串的函数
函数名 | 调用形式 | 功能 | 返回值 |
---|---|---|---|
fgets | fgets(str,n,fp) | 从fp指向的文件读入一个长度为(n一1)的字符串,存放到字符数组str中。 | 读成功,返回地址str,失败则返回NULL |
fputs | fputs(str,fp) | 把str所指向的字符串写到文件指针变量fp所指向的文件中 | 输出成功,返回0;否则返回非0值 |
说明: (1) fgets函数的函数原型为 char * fgets (char * str,int n,FILE * fp); 其作用是从文件读入一个字符串。调用时可以写成
fgets(str,n,fp);
(2)fputs函数的函数原型为 int fputs (char * str,FILE* fp); 其作用是将str所指向的字符串输出到fp所指向的文件中。调用时可以写成
//例如: fputs("China", fp);
fgets和 fgets这两个函数的功能类似于gets和 puts函数﹐只是gets和 puts以终端为读写对象,而fgets 和fputs函数以指定的文件作为读写对象。
2.3用格式化的方式读写文件
前面进行的是字符的输人输出,而实际上数据的类型是丰富的。大家已很熟悉用printf函数和scanf函数向终端进行格式化的输人输出,即用各种不同的格式以终端为对象输人输出数据。其实也可以对文件进行格式化输入输出,这时就要用fprintf函数和fscanf函数,从函数名可以看到,它们只是在printf和 scanf 的前面加了一个字母“f”。它们的作用与printf函数和scanf函数相仿,都是格式化读写函数。只有一点不同:fprintf和 fscanf 函数的读写对象不是终端而是文件。它们的一般调用方式为 fprintf(文件指针,格式字符串,输出表列);
fscanf(文件指针,格式字符串,输入表列);
//例如: fprintf (fp,"%d,%6.2f”,i,f);
2.4用二进制方式向文件读写一组数据
它们的一般调用形式为
fread(buffer,size,count,fp);
fwrite( buffer ,size,count,fp);
其中: buffer:是一个地址。对fread来说,它是用来存放从文件读入的数据的存储区的地址。对fwrite来说,是要把此地址开始的存储区中的数据向文件输出(以上指的是起始地址)。
size:要读写的字节数。
count:要读写多少个数据项(每个数据项长度为size)。
fp: FILE类型指针。
在打开文件时指定用二进制文件,这样就可以用fread和fwrite函数读写任何类型的信息﹐例如: fread(f,4,10,fp);
3.随机读写数据文件
3.1文件位置标记的定位
(1)用rewind函数使文件位置标记指向文件开头
rewind函数的作用是使文件位置标记重新返回文件的开头,此函数没有返回值。
//列如 rewind(fp);
(2)用fseek 函数改变文件位置标记
fseek 函数的调用形式为
fseek(文件类型指针,位移量,起始点)
//列如 fseek(fp,100L,0);
4.文件读写的出错检测
1.ferror函数
一般形式: ferror(fp);
如果ferror返回值为O(假),表示未出错;如果返回一个非零值,表示出错。
2.clearerr函数
clearerr的作用是使文件错误标志和文件结束标志置为0。假设在调用一个输入输出函数时出现错误, ferror函数值为一个非零值。应该立即调用clearerr(fp),使ferror(fp)的值变成0,以便再进行下一次的检测。