1.文件分类:分为程序文件和数据文件
? ? ? ? 1.程序文件:源程序文件(后缀.c),目标文件(windows环境后缀.obj),可执行程序(windows环境后缀.exe)
? ? ? ? 2.数据文件:程序运行时读写的数据,分为文本文件和二进制文件
2.文件名:文件路径+文件名主干+文件后缀
3.二进制文件:数据在内存中以二进制形式存储,不加转换输出到外存文件中
4.文本文件:在存储前转换为ASC码形式,读不懂二进制
5.数据在文件中的存储:字符用ASC2形式,数值型数据使用ASC2形式或者二进制形式(可以将各位数字看成字符)
6.流:可以近似认为是一个字符河,负责程序与外部设备的对接,通常有输入流和输出流两种
7.标准流:在我们运行c语言的时候,系统会默认打开三个流,三个流的类型为FILE*,为文件指针:
? ? ? ? ?1.stdin:标准输入流,在大多数环境从键盘输入,scanf函数就是从输入流中读取数据的
? ? ? ? ?2.stdout:标准输出流,在大多数环境中输出到显示器界面,printf函数就是把信息输入到标准输出流中
? ? ? ? 3.stderr:标准错误流,大多数环境中输出到显示器界面
8.文件指针:每个被使用的文件都开辟了一个文件信息区,用来存放相关的信息如文件名字,文件状态或者文件位置,这些信息保存在一个结构体变量中,系统将此结构体声明并取名为FILE,而维护时可以用文件指针找到文件信息区
9.打开和关闭文件:
FILE*fopen(const char*filename,const char*mode)//打开文件,mode为文件的打开方式
int fclose(FILE* stream)//关闭文件
文件打开方式:
报错函数perror("fopen")代表对函数fopen进行报错排查
10.文件读写方式:顺序读写和随机读写
其中二进制输出只针对文件,其余可以是文件可以是普通数据,而且可以由stdin,stdout代替
写文件:fputc函数(写入内容,文件指针);如果换行加入\n
读文件:fgetc函数(文件指针)
????????????????fgets函数(读取内容的指针,最多读多少个字符,文件指针)
? ? ? ? ? ? ? ? fputs函数(输出内容的指针,输出内容的方式如stdout)
#include<stdio.h>
int main()
{
FILE* pa = fopen("data1.txt", "r");//打开文件
if (pa ==NULL)
{
perror("fopen->data1.txt");
return 1;
}
FILE* pb = fopen("data2.txt", "w");
if (pb == NULL)
{
fclose(pa);
pa = NULL;
perror("fopen->data2.txt");
return 1;
}
int ch = 0; //数据的拷贝
while (ch = fgetc(pa) != EOF)//文件的读写按行操作
{
fputc(ch, pb);
}
fclose(pa);
fclose(pb);
return 0;
}
格式化输出函数fprintf(文件指针,打印内容),相比普通的printf函数只是前面加了一个文件指针
格式化输入函数fscanf(文件指针,打印内容),相比普通的scanf函数只是前面加了一个文件指针,记得别忘了取地址符
二进制输出函数fwrite(被写的数据指针,每个元素的字节数,需要写的元素数,文件名)
二进制输入(从流中取出再输入到文件)函数fread(被读的数据指针,每个元素的字节数,需要读的元素数,文件名)