文本模式
//r 只读
//w 删除原有内容,重写入 文件不存在,还可以创建文件
//a 在原有内容后接着写 文件不存在,还可以创建文件
//r+ 可读可写 删除原有内容,重写入
//w+
//a+
//读取文件01.txt
FILE* pFile = fopen("01.txt", "r");
二进制模式
//rb,wb,ab
//读取文件01.txt
FILE* pFile = fopen("01.txt", "rb");
写入文件,fwrite
FILE* pFile = fopen("01.txt", "w");
char* str = "C语言";
//fwrite(str, sizeof(char), strlen(str)+1, pFile);
//fwrite的返回值,0写入失败 , 成功返回字符个数*字符大小
int a = fwrite(str, sizeof(char), strlen(str), pFile);
fclose(pFile);//关闭文件并保存
注:FILE* pFile = fopen(“01.txt”, “w”);//会将文件内容清空
当要读文件时,不可以w,会清空文件内容
读取文件,fread
//读多个字符
//读文件,r或a 不可以w,会清空文件内容
FILE* pFile = fopen("03.txt", "r");
char str[20] = { 0 };//用于存储文件中读取出的内容,要记住设置默认为\0
//fread 返回值 每次读取字符后,整体长度变小
//文件中没有字符,返回0
//文件中有字符,且读取字符个数无论是否大于文件中总的字符个数,都返回读取字符个数
int n = fread(str, sizeof(char), 2, pFile);//文件中的内容存储的字符数组str中,2表示每次读取文件的字符个数
读取文件,fread
//文件所有内容
FILE* pFile = fopen("03.txt", "r");
char str[20] = { 0 };//用于存储文件中读取出的内容,要记住设置默认为\0
int a;
while ( a = fread(str, sizeof(char), 2, pFile) )//文件内容为空时,a = 0
{
printf("%s", str);
}
fclose(pFile);
文件内容为:
结果如下:
明显出现错误,我们是2个字符的读取,最后剩下一个字符了,只更新了一个,str[1]还是上一次循环的值,解决方法,在循环后加上这两句
str[0] = '\0';
str[1] = '\0';
最后结果为:
文本模式和二进制模式行结尾的不同
FILE* pFile = fopen("04.txt", "rb");
char str[20] = { 0 };
//行结尾的不同
//文本模式读出一个字符\n
//二进制模式读出两个字符\r\n
while (!feof(pFile))//判断文件是否到结尾了 到结尾返回1,没到结尾返回0
{
int a = fread(str, sizeof(char), 20, pFile);
printf(str);
str[0] = 0;
str[1] = 0;
}
fclose(pFile);
结构体写入文件
struct node
{
int num;
char name[15];
double height;
int age;
};
int main(void)
{
//结构体写入文件
struct node n = { 123, "jkl", 178.2, 22 };
//printf("%d\t%s\t%lf\t%d", n.num, n.name, n.height, n.age);
FILE* pFile = fopen("05.txt", "r");
//fwrite(&n, sizeof(n), 1, pFile);
struct node n2;
fread(&n2, sizeof(n2), 1, pFile);
printf("%d\t%s\t%lf\t%d", n2.num, n2.name, n2.height, n2.age);
fclose(pFile);
}
fgets读取文件一行和fputs写入文件一行
//fputs写入文件一行
FILE* pFile = fopen("06.txt", "w");
fputs("Hello\n", pFile);
fputs("World", pFile);
fclose(pFile);
//fgets读取文件一行
FILE* pFile2 = fopen("06.txt", "r");
char str[10] = { 0 };
fgets(str, 10, pFile2);
fgets(str, 10, pFile2);
fclose(pFile2);
fprintf和fscanf
//按照某种格式写入文件,读取时也按照某种格式
扫描二维码关注公众号,回复:
5064368 查看本文章

FILE* pfile = fopen("07.txt", "r");
//按照某种格式写入文件,读取时也按照某种格式
//fprintf(pfile, "%d %s %lf", 23, "jk", 8.42);
int n = 0;
char str[20] = { 0 };
double d = 0.0;
fscanf(pfile, "%d %s %lf", &n, &str, &d);
fclose(pfile);