文章目录
1.1 文件的论述
文件:存储在外部介质上的数据集合
键盘可以看作是输入文件
显示器可以看作是输出文件
数据也可以组成一个文件
文件可以分为ASCII文件和二进制文件
1.2 文件类型指针
文件结构体类型:FILE
FILE是系统使用typedef定义出来的有关文件信息的一种结构体类型,结构中含有文件名、文件状态和文件当前位置等信息
文件型指针变量:FILE *fp
fp指向某文件的结构体变量,通过该结构体变量中的文件信息访问该文件
注:使用FILE类型需要添加 #include <stdio.h>
1.3 文件的操作
在缓冲文件系统中,每个被使用的文件都要在内存中开辟一块FILE类型的区域,存放与操作文件相关的信息
通过fopen将test1.txt打开,系统在内存中开辟FILE类型的结构体,结构体里存储着test1.txt的文件类型
对文件操作的步骤:
1、对文件进行读写操作之前要打开文件得到文件指针
2、可以通过文件指针对文件进行读写操作
3、读写操作完毕后,要关闭文件,关闭文件后,就不能通过此文件指针操作文件了
1.4 文件的打开与关闭
1.4.1 文件的打开(fopen函数)
*FILE fp
fp=fopen(“文件路径”,“文件打开的方式”)
注意:相对路径(当前目录下的): “aa.txt”
绝对路径(从根目录开始的路径名称):“D:\demo\test\aa.txt”
文件打开主要使用 r、w、a、r+
带"+"就是可读可写
带"b"就是当二进制文件打开,不带则是当文本文件打开
带"a"就是追加的方式
1.4.2 文件的关闭(fclose函数)
fclose函数的调用方式:fclose(文件指针)
例:fclose(fp);
注:在程序终止前应关闭所有使用的文件
返回值: 成功返回0
非成功返回非0
#include <stdio.h>
int main(){
FILE* fp1;
fp1=fopen(".\\test.txt","r+");
if(fp1==NULL){
printf("文件test.txt不存在\n");
return 0;
}
printf("打开文件test.txt成功\n");
int result=0;
result=fclose(fp1);
if(result==0){
printf("关闭文件成功\n");
}
else{
printf("关闭文件失败\n");
}
return 0;
}
1.5 文件的读写
1.5.1 fputc函数和fgetc函数(一次读写一个字符)
1、fputc()把一个字符写入指定的文件 例:fputc(ch,fp)
fputc将c的值写到stream所代表的文件中
返回值:
如果输出成功,则返回输出的字节值
如果输出失败,则返回一个EOF
2、fgetc()从指定的文件读入一个字符 例:ch=fgetc(fp)
fegtc从stream所标识的文件中读取一个字节,将字节值返回
返回值:
以t的方式:读到文件结尾返回EOF
以b的方式:读到文件结尾,使用feof(文件指针)判断结尾
feof是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回。
**注:**以EOF(end of file)作为文件结束标志的必须是文本文件,数据以ASCII码存放(0-255 不可能存在-1)
feof(判断文件结束函数)
// 练习:实现文件的复制
#include <stdio.h>
int main()
{
FILE *