个人理解,若有错误请指出。
在我们操作文件之前,我们先简单了解一下文件。
文件:以计算机硬盘为载体存储在计算机上的信息集合。(注:每个文件都有自己的文件名,作为文件标识,以便使用和识别。)
例如:
文件名 = 文件路径 + 文件名主干 + 文件后缀。
上图就是我打开的一个文件,并且分别标注了一个文件的各个部分。
文件类型:1.文本文件
2.二进制文件
- 二进制文件:简单来说,数据在内存中以二进制的形式储存,不加转换输出到外存中,就是二进制文件。(注:以记事本方式打开)
2. 文本文件:数据在内存中是二进制形式,在输出到外存时,用 ASCII 码进行转换之后,再输出到外存中,这就是文本文件。
两者直观上的区别:以记事本打开,能看懂的就是文本文件,看不懂的就是二进制文件。
C 语言标准采用 “ 缓冲文件系统 " 来处理文件数据的。简单来说,文件缓冲系统为每一个正在执行的文件开辟一块 "文件缓冲区 "。当内存项磁盘输送数据时,先将数据储存到文件缓冲区,等到缓冲区 “装满” 时,一起将数据输送的磁盘中,同样地,从磁盘读取数据时,先将数据放到内存缓冲区等到 “装满” 时,一起将数据送到相应的内存中。当然,缓冲区的大小由 C 编译系统决定。
文件的常用基本操作:
1.文件打开
2.文件关闭
3.读文件
4.写文件
我们在进行文件操作的时候,都需要 C 语言的标准库来进行支持。标准库为我们提供了相关的函数来帮助我们完成文件的各个操作。
- 文件打开:
FILE * fopen ( const char * filename, const char * mode );
- 文件关闭:
int fclose ( FILE * stream );
- 读文件:
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
- 写文件:
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
(注:读文件,写文件的函数有好多种,我们在这里直说常用的方法)
下面为一些常用操作例子:
- 读文件:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
char temp[1024] = {'\0'}; // 用来储存文件内的字符串。
// 打开一个文件:(只读模式)
FILE* fp = fopen("C:/Users/www18/Documents/记事本/文件操作.txt",
"r");
if (fp == NULL) {
printf("打开失败!\n");
ferror("Open failed\n"); // 输出失败原因(错误码)
}
// 读文件:
fread(temp, 1, 1024, fp);
printf("文件内容:%s\n", temp);
// 关闭文件:
fclose(fp);
system("pause");
return 0;
}
运行结果:
2. 写文件:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main() {
char temp[1024] = {'\0'}; // 用来储存输入的字符串。
// 打开一个文件:(只写模式)
FILE* fp = fopen("C:/Users/www18/Documents/记事本/文件操作.txt",
"w");
if (fp == NULL) {
printf("打开失败!\n");
ferror("Open failed\n"); // 输出失败原因(错误码)
}
// 写文件:
printf("请输入需要写入的内容:\n");
gets(temp);
fwrite(temp, 1, 1024, fp);
// 关闭文件:
fclose(fp);
system("pause");
return 0;
}
运行结果:
以上两个例子为最常用的操作,其他关于文件的操作,以及其他函数的使用将会后续更新,请关注博客进行查看。