------- android培训、java培训、期待与您交流! ----------
文件的概念及分类
“文件”指存储在外部介质上数据的集合,这个数据集有一个名词,叫做文件名。
从文件编码的方式来看,文件可分为ASCII码文件和二进制文件两种。
对文件的操作步骤
1、引入头文件(stdio.h)
2、定义文件指针
3、打开文件
4、文件读写
5、关闭文件
对文件的读和写是最常用的文件操作。在c语言中提供了多种文件读写的函数:
字符读写函数:fgetc和fputc
字符串读写函数:fgets和fputs
数据块读写函数:freed和fwrite
格式化读写函数:fscanf和fprinf
使用以上函数都要求包含头文件stdio.h
C语言文件指针
在C语言中用一个指针变量指向一个文件, 这个指针称为文件指针。
声明FILE结构体类型的信息包含在头文件“stdio.h”中
一般设置一个指向FILE类型变量的指针变量,然后通过它来引用这些FILE类型变量
通过文件指针就可对它所指的文件进行各种操作。
定义说明文件指针的一般形式为:
FILE *指标变量标识符;
其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。
在C语言中,文件操作都是由库函数来完成的。
文件的打开(fopen函数)
调用的一般形式为:
文件指针变量名=fopen(文件名,使用文件方式);
其中:
“文件指针名”必须是被说明为FILE类型的指针变量;
“文件名”是被打开文件的文件名;
“使用文件方式”是指文件的类型和操作要求;
“文件名”是字符串常量或字符串数组;
如果打开成果,返回文件的首地址,失败返回NULL
文件关闭函数(fclose函数)
文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。
调用的一般形式是:
fclose(文件指针);
正常完成关闭文件操作时,fclose函数返回值为0。若返回非零值则表示有错误发生。
#include <stdio.h>
int main(int argc, const char * argv[]) {
FILE *fp = NULL;//F
fp = fopen("a.txt", "r");
//一般我们做一个判断,当文件打开成功,我们在读写文件
if (fp!=NULL) {
//操作文件
}else{
//给用户提示
printf("打开失败");
getchar();//要求从键盘接受一个字符
exit(1);//退出,非正常退出
};
fclose(fp);
return 0;
}
字符写入函数fputc
功能是把一个字符写入指定的文件中。函数调用的形式为:
fputc(字符量,文件指针);
其中,待写入的字符量可以是字符常量或变量
字符读取函数fgetc
调用的形式:
fgetc(文件指针变量名);
文件使用方式
数据块读写函数fread和fwrite
读数据块函数调用的一般形式为:
fread(buffer,size,count,fp);
写数据块函数调用的一般形式为:
fwrite(buffer,size,count,fp);
其中:
buffer:是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。
size:表示数据块的字节数。
count:表示要读写的数据块块数
fp:表示文件指针。
#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
char *str ={"I LOVE YOU!"};
FILE *fp = fopen("fwrite.txt", "w+");
if (fp!=NULL) {
fwrite(str, strlen(str), 1, fp);
printf("写入成功!");
}
rewind(fp);
char ch[12];
fread(ch, sizeof(ch), 1, fp);
printf("%s",ch);
fclose(fp);
return 0;
}
格式化读写函数:fscanf和fprintf
调用格式:
fscanf(文件指针,格式字符串,输入表列);//读取函数
fprintf(文件指针,格式字符串,输出表列);//写入函数
文件定位
移动文件内部的位置指针到需要读写的位置,再进行读写,这种读写称为随机读写。
实现随机读写的关键是要按要求移动位置指针,这称为文件的定位。
移动文件内部位置指针的函数主要有两个,即rewind()和fseek()。
rewind函数调用形式为:
rewind(文件指针);
它的功能是把文件内部的位置指针移到文件首
fseek函数调用形式为:
fseek(文件指针,位移量,起始点);
其中:
“文件指针”指向被移动的文件。
“位移量”表示移动的字节数,要求位移量是long型数据,以便在文件长度大于64kb时不会出错。当用常量表示位移量时,要求加后缀“L”。
“起始点”表示从何处开始计算位移量,规定的起始点有三种:文件首,当前位置和文件尾巴。
文件结束检测函数feof函数
调用格式:
feof(文件指针);
功能:判断文件是否处于文件结束位置,如文件结束,则返回值为1,否则为0.