您的位置:首页 > 健康 > 养生 > 链接点击量软件_创意logo设计生成器_网络营销课程报告_电商网站搭建

链接点击量软件_创意logo设计生成器_网络营销课程报告_电商网站搭建

2025/4/6 5:04:52 来源:https://blog.csdn.net/m0_45447650/article/details/141885341  浏览:    关键词:链接点击量软件_创意logo设计生成器_网络营销课程报告_电商网站搭建
链接点击量软件_创意logo设计生成器_网络营销课程报告_电商网站搭建

目录

文件的打开和关闭

文件指针 

文件的打开和关闭

文件的读写

文件的顺序读写


文件的打开和关闭

文件指针 

缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针
每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE。

不同的C编译器的FILE类型包含的内容不完全相同,但是大同小异。

每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息使用者不必关心细节。
一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便下面我们可以创建一个FILE*的指针变量:

FILE*  pf;     // 文件指针变量

定义pf是一个指向FILE类型数据的指针变量。可以使pf指向某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就能够访问该文件。也就是说,通过文件指针变量能够找到与它关联的文件

文件的打开和关闭

文件在读写之前应该先打开文件,在使用结束之后应该关闭文件
在编写程序的时候,在打开文件的同时,都会返回一个 FILE* 的指针变量指向该文件,也相当于建立了指针和文件的关系。

ANSIC规定使用fopen函数来打开文件,fclose来关闭文件。

//打开文件
FILE*  fopen(const  char *  filename,const  char *  mode );

mode:文件的打开模式,读、写或追加。

//关闭文件
int  fclose(FILE * stream);

#include<string.h>
#include<errno.h>
int main() {FILE* pf = fopen("text.txt", "r");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}// ...// 读文件// 关闭文件fclose(pf);pf = NULL;return 0;
}

文件的读写

文件的顺序读写

写文件 

写字符 

#include<string.h>
#include<errno.h>
int main() {FILE* pf = fopen("text.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;
}

写格式化数据

struct S {char arr[10];int age;float score;
};int main() {struct S s = {"Billie", 25, 98.9f};FILE* pf = fopen("text_1.txt", "w");if (pf == NULL) {perror("fopen");return 1;}// 写格式化数据fprintf(pf, "%s %d %f", s.arr, s.age, s.score);fclose(pf);pf = NULL;return 0;
}

 写二进制数据

struct S {char arr[10];int age;float score;
};
int main() {struct S s = { "Billie", 25, 98.9f };// 以二进制的形式写入文件中FILE* pf = fopen("text_2.txt", "wb");if (pf == NULL) {perror("fopen");return 1;}// 写二进制fwrite(&s, sizeof(struct S), 1, pf);fclose(pf);pf = NULL;return 0;
}

读文件

按字符读取 

#include<string.h>
#include<errno.h>
int main() {FILE* pf = fopen("text.txt", "r");if (pf == NULL) {printf("%s\n", strerror(errno));return 1;}// 读文件int ch = 0;while ((ch = fgetc(pf)) != EOF) {printf("%c\n", ch);}// 关闭文件fclose(pf);pf = NULL;return 0;
}

按行读取 

#include<string.h>
#include<errno.h>
int main() {FILE* pf = fopen("text.txt", "r");if (pf == NULL) {perror("fopen");return 1;}// 读一行数据char arr[20];fgets(arr, 5, pf);	// 只能读 4 个字节,最后一个字节默认是 “\0”printf("%s\n", arr);// 关闭文件fclose(pf);pf = NULL;return 0;
}

读格式化数据

int main() {struct S s = {0};FILE* pf = fopen("text_1.txt", "r");if (pf == NULL) {perror("fopen");return 1;}// 读格式化数据fscanf(pf, "%s %d %f", s.arr, &(s.age), &(s.score));printf("%s %d %f", s.arr, s.age, s.score);fclose(pf);pf = NULL;return 0;
}

读二进制数据

struct S {char arr[10];int age;float score;
};
int main() {struct S s = { 0 };// 以二进制的形式写入文件中FILE* pf = fopen("text_2.txt", "rb");if (pf == NULL) {perror("fopen");return 1;}// 读二进制fread(&s, sizeof(struct S), 1, pf);printf("%s %d %f", s.arr, s.age, s.score);fclose(pf);pf = NULL;return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com