目录
一.引入
当我们需要把一些数据通过代码来存储到对应的文件中时,就需要使用一些操作文件的函数来进行实现,下面就是一些函数的一些操作和使用说明。
二.文件的操作步骤
对于文件的操作是用文件指针进行操作,首先需要打开文件,接着是对文件的操作,然后将文件进行关闭并将文件指针置为,代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(){
FILE * file = fopen("file.txt","w");//以写的方式将文件打开
if (file != NULL)
{
fputs("abcde",file);//在文件中写abcde
}
fclose(file);//关闭文件
file = NULL;//将文件指针置为空
return 0;
}
当如下结果时就会创建文件成功,会在当前项目下会创建一个file.txt文件
创建的文件中的内容
三.操作文件函数的一些介绍和使用方法
(1)文件的随机读取int fseek ( )函数使用
int main(){
FILE *file = fopen("file.txt","r");//文件以读的方式进行打开
fputs("abcdef",file);
//fseek(file,2,SEEK_SET);//偏移初始位置两个
//fseek(file,-4,SEEK_END);//游标最后偏移-4个单位
fseek(file,2,SEEK_CUR);//当前位置偏移两个位置
char buffer[20];
fgets(buffer, 20, file);
printf("%s\n", buffer);//结果为cdef
return 0;
}
(2)rewind()函数将文件指针回到起始位置
int main(){
FILE *file = fopen("file.txt","r");
fputs("abcdef",file);
fseek(file,2,SEEK_CUR);//当前位置偏移两个位置
rewind(file);//将文件指针变为起始位置
char buffer[20];
fgets(buffer, 20, file);
printf("%s\n", buffer);//结果abcdef
return 0;
}
(3)fread()函数和fwrite()函数的使用
1.fread(void *restrict buffer, size_t size, size_t count, FILE *restrict stream)
参数代表的意思依次为:读到的目的地,每次读的字节大小,每次读几个,从那个文件读
2.fwrite(const void * ptr, size_t size, size_t count, FILE * stream)
参数意思依次为:从哪个位置获取数据,每次获取的字节数,每次获取几个,最终输出到哪个位置
(4)使用的函数进行实现文件的拷贝
思路分析:首先需要使用2个文件的路径,一个是需要拷贝的文件的路径,一个是将要拷贝的目的地,然后接着拷贝文件中的字节,拷贝完成后将将文件进行关闭
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<assert.h>
void CopyTest(char* p1,char* p2){
FILE *pr = fopen(p1,"rb");//二进制形式
FILE *pw = fopen(p2, "wb");
assert(pr != NULL);//判断文件打开是否正常
assert(pw != NULL);
int len;
char ch;
while ((len = fread(&ch, sizeof(char), 1, pr)) > 0)
{
fwrite(&ch,sizeof(char),len,pw);
}
fclose(pr);
fclose(pw);
pr = NULL;
pw = NULL;
}
int main(){
char* p1 = "G:\\1.txt";//最初有数据的文件,这个文件路径要设置自己需要文件的路径
char* p2 = "G:\\2.txt";//需要拷贝到的目的地,自己设置拷贝好的文件需要存的路径
CopyTest(p1,p2);
return 0;
}
使用文件可以将我们需要的数据存储到我们指定的文件中,方便了我们数据的保存,并且可以和结构体结合使用能够存储复杂的数据结构,简单的结构体操作代码如下:
#include<stdio.h>
#include<assert.h>
struct Studnet{
char name[20];
};
int main(){
//char* p1 = "G:\\1.txt";
//char* p2 = "G:\\2.txt";
struct Studnet stu1 = { "小红"};
FILE *file = fopen("file.txt","wb");
assert(file != NULL);//判断文件打开是否正常
fwrite(&stu1, sizeof(struct Studnet),1,file);//将学生信息存储到文件中
fclose(file);
file = NULL;
return 0;
}
存储结果如下:
四.总结
文件的使用比较简单,需要进行适当练习才能够熟练使用,当遇到需要的操作函数时可以使用帮助手册进行查询,不需要将这些函数背下来。