什么是文件
磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件
文件名
一个文件要有一个唯一的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径+文件名主干+文件后缀
例如: c:\code\test.txt
为了方便起见,文件标识常被称为文件名。
文件的核心操作
1.打开文件
2.关闭文件
3.读文件
4.写文件
在读写文件之前必须先打开
文件是在磁盘上,程序直接操作磁盘不太方便,打开文件就是创建一个遥控器,这个遥控器是内存中的一个变量,借助这个内存中的变量就可以更方便的来操作磁盘
这样的遥控器称为“句柄”
FILE* fp = fopen("d:/test.txtaaaa", "r");//结构体变量fp就是提到的遥控器,文件指针,句柄
if (fp == NULL){
//使用错误码获取失败的原因
printf("打开文件失败!%d\n", errno);
printf("打开文件失败!%s\n",strerror(errno));
return 0;
}
perror("打开文件失败!");//更常见的写法
读写文件操作
FILE* fp = fopen("d:/test.txt", "r");//结构体变量fp就是提到的遥控器,文件指针,句柄
if (fp == NULL){
//使用错误码获取失败的原因
perror("打开文件失败!");
system("pause");
return 0;
}
char buf[1024] = { 0 };
//把磁盘的数据读到内存之中
size_t n=fread(buf, 1, sizeof(buf)-1, fp);
printf("%d\n", n);
printf("%s\n", buf);
system("pause");
return 0;
确实将文本的内容读出来
FILE* fp = fopen("d:/test.txt", "w");//结构体变量fp就是提到的遥控器,文件指针,句柄
if (fp == NULL){
//使用错误码获取失败的原因
perror("打开文件失败!");
system("pause");
return 0;
}
char buf[1024] = "呵呵呵呵呵呵";
fwrite(buf, 1, strlen(buf), fp);
//将内存的数据写到磁盘里
文件的内容得到了修改
那么最多可以打开多少个文件,我们开下面这个代码
int count=0;
while (1)
{
FILE* fp = fopen("d:/test.txt", "w");//结构体变量fp就是提到的遥控器,文件指针,句柄
if (fp == NULL){
//使用错误码获取失败的原因
perror("打开文件失败!");
printf("%d\n", count);
system("pause");
return 0;
}
++count;
}
一个程序能打开的文件是有上限,我的电脑,512是上限
509是代码自己打开的文件
还有三个文件是程序运行过程中,操作系统自动打开的文件
- stdin:标准输入 =>键盘
- stdout:标准输出 =>显示器
- stderr:标准错误 =>显示器
- 这都是一个文件,一个特殊的文件,对应的不是磁盘,而是键盘显示器,为了管理方便,操作显示器读写文件,操作键盘读写文件
//以stdiou为例子
FILE* fp = fopen("d:/test.txt", "w");
if (fp == NULL){
perror("打开文件失败\n");
return 0;
}
char buf[1024] = "hehe";
fwrite(buf, 1, strlen(buf), stdout);
文件是空