前三部分已经给您介绍了,将把网址发给您审核
打开如下:
文件使用是指如果指定的文件不存在
“w”(只写)打开文本文件并创建一个新文件用于输出数据
“a”(追加)将数据添加到文本文件末尾以创建新文件
“rb”(只读)打开二进制文件进行数据输入时出错
“wb”(只写)打开二进制文件并创建一个新文件用于输出数据
“ab”(追加)将数据追加到二进制文件的末尾以创建新文件
“r+”(读取和写入)打开文本文件进行读取和写入时出错
“w+”(读和写)用于读和写,建议一个新文件创建一个新文件
“a+”(读写)打开一个文件,在文件末尾读写创建一个新文件
“rb+”(读写)打开二进制文件进行读写时出错
“wb+”(读写) 创建一个新的二进制文件,用于读写 创建一个新文件
“ab+”(读写)打开一个二进制文件,在文件末尾读写创建一个新文件
示例代码:
#include
int main ()
{
FILE * pFile;
//打开文件
pFile = fopen ("myfile.txt","w");
//文件操作
if (pFile!=NULL)
{
fputs ("fopen example",pFile);
//关闭文件
fclose (pFile);
}
return 0;
}
4. 文件的顺序读写 4.1 顺序读写功能介绍
函数函数名适用于
字符输入函数 fgetc 所有输入流
字符输出函数fputc所有输出流
文本行输入函数fget所有输入流
文本行输出函数 fputs 所有输出流
所有输入流的格式化输入函数
所有输出流的格式化输出功能
二进制输入 fread 文件
二进制输出文件
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
int main()
{
FILE* pf = fopen("test.txt", "w");//定义一个变量pf,pf指向这个文件信息区,文件信息区和文件本身相关联,这时候我们就可以读或者写或者对文件做一些其他的事情等等
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return 1;
}
//写文件
//......
//关闭文件
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
这里可能有同学会问,为什么要关闭pf指向的文件呢?
这是因为文件也是一种资源。 最后,如果关闭文件,就会释放资源。 程序可以打开的文件数量是有限的。 并不是说可以无限期地开放。 文件很多,如果不关闭这个文件可能会导致数据丢失等情况,所以一定要关闭该文件并将其设置为NULL
fputc函数
我们看一下代码
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
int main()
{
FILE* pf = fopen("test.txt", "w");
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return 1;
}
char i = 0;
for (i = 'a'; i <= 'z'; i++)
{
fputc(i, pf);
}
//写文件
//......
//关闭文件
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
你可以复制代码自己测试一下
这时候我们再打开test.txt文件,看看我们刚才写的26个字母是否已经全部写入到文件中了
大家看看,结果是真的
现在我们想以字符的形式取出我的my文件中的所有字符。 这时候我们就要用到fgetc函数
fgetc 函数
简而言之,如果读取到错误的字符,则返回EOF
现在我们看一下代码
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
int main()
{
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return 1;
}
int ch = 0;
while ((ch = fgetc(pf)) != EOF)
{
printf("%c ", ch);
}
//char i = 0;
//for (i = 'a'; i <= 'z'; i++)
//{
// fputc(i, pf);
//}
//写文件
//......
//关闭文件
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
大家看到fgetc读取了文件中的所有字符
现在我们写入一行数据,这个时候我们需要用到fputs函数
输出函数
const char * str,文件 *
这里的Write to表示将字符串写入流(即文件)中
你看,你可能会有疑问,我们刚才不是写了26个英文字母吗,为什么这里少了26个字母?这是因为当你再次向文件写入数据时,它会自动清除你在文件中写入的所有内容。原始文件,然后重写它。 希望大家能够理解
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
int main()
{
FILE* pf = fopen("test.txt", "w");//"w"改成"a"的时候是追加的意思。我们来看下面的图片
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return 1;
}
fputs("hello bit", pf);
//int ch = 0;
//while ((ch = fgetc(pf)) != EOF)
//{
// printf("%c ", ch);
//}
//char i = 0;
//for (i = 'a'; i <= 'z'; i++)
//{
// fputc(i, pf);
//}
//写文件
//......
//关闭文件
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
FILE pf = fopen("test.txt", "w");//当"w"改为"a"时,表示追加。 我们来看看下面的图片*
现在我们想要随机读取一行数据该怎么办呢,所以我们引入fgets函数
fgets 函数
读取的字符串会被复制到str指向的空间
将复制到 str 的最大字符数
你可以尝试自己去理解
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
int main()
{
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
printf("%s\n", strerror(errno));
return 1;
}
char arr[20];
fgets(arr, 5, pf);
printf("%s\n", arr);//放5的时候最多能够读到4个
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
下面我给大家介绍一下这个功能,使用起来比较方便
功能
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
int main()
{
FILE* pf = fopen("test", "r");
if (pf == NULL)
{
//printf("%s\n", strerror(errno));
perror("fopen");
return 1;
}
char arr[20];
fgets(arr, 5, pf);
printf("%s\n", arr);//放5的时候最多能够读到4个
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
/这里我给大家介绍一下该功能
功能
把代码给大家
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
struct S
{
char arr[20];
int age;
float score;
};
int main()
{
struct S s = { "zhangsan",25,50.5f };
FILE* pf = fopen("test.txt", "w");
if (pf == NULL)
{
//printf("%s\n", strerror(errno));
perror("fopen");
return 1;
}
fprintf(pf, "%s %d %f", s.arr, s.age, s.score);//fprintf将数据写到文件里面去
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
如果要从文件中读取数据,这里必须引入该函数
功能
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
struct S
{
char arr[20];
int age;
float score;
};
int main()
{
struct S s = { "zhangsan",25,50.5f };
FILE* pf = fopen("test.txt", "w");
if (pf == NULL)
{
//printf("%s\n", strerror(errno));
perror("fopen");
return 1;
}
fscanf(pf, "%s %d %f", s.arr, (&s.age), &(s.score));//fscanf从文件里面去读,将信息从pf指向的文件读出来放到s里面去,再将其打印出来
printf("%s %d %f", s.arr, s.age, s.score);
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
功能介绍
功能
这时候你发现你有一些看不懂的东西,因为这是用二进制形式写的
如果我们以二进制形式写入它,那么我们就可以以二进制形式读取它。 这时候我们就需要引入fread函数
读取函数
我们以二进制形式写入,我们可以以二进制形式读出
#define _CRT_SECURE_NO_WARNINGS 1
#include
//#include
#include
#include
struct S
{
char arr[20];
int age;
float score;
};
int main()
{
struct S s = { "zhangsan",25,50.5f };
FILE* pf = fopen("test.txt", "wb");
if (pf == NULL)
{
perror("fopen");
return 1;
}
//fwrite(&s, sizeof(struct S), 1, pf);
fread(&s, sizeof(struct S), 1, pf);
printf("%s %d %f\n", s.arr, s.age, s.score);
fclose(pf);
pf = NULL;//设置成空指针使其再也找不到这块空间
return 0;
}
本章结束!