我发现这样的博客不多,在B站上看了一个小时的视频,终于get了这个技能,又可以水一篇博客了!
TXT文件的读:
首先是文件指针和打开文件的函数:
FILE *file;
file=fopen(" "," ");
(其中第一个双引号里是文件地址,文件地址必须用 \ \ 隔开,不然会出错,第二个是打开类型)
打开类型汇总:
- r 以只读方式打开文件,该文件必须存在。
- r+ 以可读写方式打开文件,该文件必须存在。
- rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
- w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
- w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
- a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
- a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
- wb 只写打开或新建一个二进制文件;只允许写数据
- wb+ 读写打开或建立一个二进制文件,允许读和写。
- ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
举个例子就能更明白了:
#include<stdio.h>
int main()
{
FILE *file;
file = fopen("C:\\Users\\lenovo\\Desktop\\prog.txt","r");
if(file==NULL)//如果未打开就提示读取错误
{
printf("read error");
}
else
{
printf("Yes");
}
fclose(file);//文件关闭函数
}
上面的例子就是读取文件的第一步打开文件。
完成了这一步,才能继续学习下面的读取信息。
想要读数据就要用函数:fgetc()
那么我们在上边的代码中加入:
char ch=0;
ch =fgetc(file);
printf("%c",ch);
就可以输出TXT文件中的第一个字符了。
如果想要读取很多的字符
那么可以将char ch=0;改成char ch[]用for循环读取。
在这里我补充一个经常会用到的读取方法吧。
#include<stdio.h>
int main()
{
char ch[5];
char sh=0;
int i;
FILE *file;
file = fopen("C:\\Users\\lenovo\\Desktop\\prog.txt","r+");
if(file==NULL)
{
printf("read error");
}
else
{
sh =fgetc(file);
while(!feof(file))//常用循环,这样可以将文件所有内容读取出来
{
printf("%c",sh);
sh=fgetc(file);
}
}
fclose(file);
}
TXT文件的写:
char sh;
sh=fputc('a',file);
上面的函数就是写入数据的重要函数
如果写入的是单个字符是单引号,多个字符是双引号,其他数据因情况而改变。
如果没有写入成功sh就是-1,因此可以用if语句判断有没有成功。
在这里我仍然给大家一个实用的方法和函数:
在这里插入代码片
#include<stdio.h>
typedef struct //定义一个结构块
{
char name[24];
char ID[20];
} STU;
int main()
{
STU class[5] =
{
{"zs","10086"},
{"ss","10002"},
{"zz","10000"},
}; //调用结构快并填充数据。
char ch[5];
char sh=0;
int i;
FILE *file;
file = fopen("C:\\Users\\lenovo\\Desktop\\prog.txt","r+");
if(file==NULL)
{
printf("read error");
}
else
{
fwrite(&class[0],sizeof(STU),1,file);
//fwrite()函数同样是非常实用的函数
//fwrite(块地址,块大小,快数量,填入文件变量名),四个参数
}
fclose(file);
}
如果大家还有什么不懂得地方,强烈推荐B站一个视频:
点击观看