C语言-文件操作的函数
来源:互联网 发布:天网软件拖欠工资 编辑:程序博客网 时间:2024/06/07 19:51
如果把C语言编写的程序在内存中运行的结果显示在控制台上,当程序执行结束时,内存中的数据会被清空,无法永久存储。所以C语言中定义了文件操作的函数,用来操作内存外部可以永久存储数据的介质(磁盘、闪盘等)。
对于操作不同长度的数据类型,C语言中定义了不同的文件操作函数。
1 读写一个字符的函数fputc()和fgetc();
fputc()格式:fputc(字符,文件指针);
fgetc()格式:fgetc(字符,文件指针);
通过fputc()或者fgetc()获取一个字符后,文件指针会自动移动到下一个写入或读取字符的位置。文件中数据结束的标志是宏定义的EOF,因此当从文件中读取字符时,可以通过判断读取的字符是否是EOF来作为文件是否读取结束的标志。
2 读写一个字符串函数fputs()和fgets();
fputs()格式:fputs(字符串,文件指针);
fgets()格式:fgets(存储首地址,读取长度,文件指针);
比如:
<1> FILE *fp = fopen("text.txt","w");
fputs("I LOVE CHINA!",fp);//表示把字符串“I LOVE CHINA!”写入的文件text.txt中,其返回的是字符串长度,不包含字符‘\0’,这次返回的数字为13;
<2> char name[20];
int count = 10;
fgets(name,count,fp);//从文件text.txt中读取长度为count的数据到字符数组name当中,其中count表示包含字符‘\0’的总长度,其读取的字符为count-1(9)个;
3 格式化读写函数fscanf()和fprintf();
fscanf()格式:fscanf(文件指针,格式控制字符串,变量列表);
fprintf()格式:fprintf(文件指针,格式控制字符串,变量列表);
通过格式化读写函数fscanf()和fprintf()可以把已有的数据按照自定义的方式存储到文件当中,如1#3,2#4等,这样可以让数据更具有可读性;
4 数据块的读写函数fwrite()和fread();
fwrite()格式:fwrite(要写入的数据首地址,数据块大小,数据块个数,文件指针);
fread()格式:fread(要读入的数据首地址,数据块大小,数据块个数,文件指针);
通过数据块读写函数fwrite()和fread()可以方便的存储和读取结构体变量;
关于文件操作函数的应用实例如下:
#include <stdio.h>//记录从键盘录入的字符串int main(int argc, const char * argv[]) { //定义变量 int ch; //提示用户输入 printf("请输入字符串:\n"); //打开文件 FILE *fp = fopen("test.txt", "w+"); ch = getchar(); int count = 0; while (ch != '\n') { //写入文件 fputc(ch, fp); ch = getchar(); count++; } printf("共输入%d个字符!\n",count); //读入文件 rewind(fp); ch = fgetc(fp); count = 0; while (ch != EOF) { printf("%c",ch); ch = fgetc(fp); count++; } printf("共输出%d个字符\n",count); //关闭文件 int f = fclose(fp); if (f == 0) { printf("文件关闭成功\n"); }; return 0;}
#include <stdio.h>//字符串的写入和读出int main(int argc, const char * argv[]) { //打开文件 FILE *fp = fopen("test1.txt", "r+"); int count = 0; if (fp != NULL) { //写入字符串 count = fputs("I LOVE CHINA!", fp); printf("写入%d个字符\n",count); //读取字符串 char ch[100]; rewind(fp);//文件指针返回文件首 fgets(ch, count, fp); printf("读取字符串为:%s\n",ch); } //关闭文件 fclose(fp); return 0;}
#include <stdio.h>//格式化输入函数int main(int argc, const char * argv[]) { //打开文件 FILE *fp = fopen("fprintf.txt", "w+"); //格式化输入文件 if (fp != NULL) { for (int i = 0; i < 10; i++) { fprintf(fp, "%d#%d\n",i,i+2); } printf("写入成功\n"); rewind(fp); //格式化读取数据到数组 int num[20]; int j = 0; for (int i = 0; i < 10; i++) { fscanf(fp, "%d#%d",&num[j++],&num[j++]); } for (int j = 0; j < 20; j++) { printf("%d\t", num[j]); } printf("\n"); } //关闭文件 fclose(fp); return 0;}
#include <stdio.h>//从结构体信息的读取fread和fwriteint main(int argc, const char * argv[]) { // 定义结构体及结构体数组 struct student{ char name[20]; int age; float score; } stu[2] = {{"jiaxu",25,80.00f},{"liuye",25,75.3f}}; //初始化结构体数组 //打开文件 FILE *fp = fopen("fstruct.data", "wb+"); //循环写入结构体元素 if (fp != NULL) { for (int i = 0; i < 2; i++) { fwrite(&stu[i], sizeof(struct student), 1, fp); } printf("写入成功\n"); //定义结构体数组以接收读取的结构体成员 struct student stu2[2]; rewind(fp); for (int i = 0; i <2; i++) { fread(&stu2[i], sizeof(struct student), 1, fp); } printf("读取成功!\n"); //打印新定义的结构体数组元素 for (int i = 0; i < 2; i++) { printf("name:%s age:%d score:%.2f\n",stu2[i].name,stu2[i].age,stu2[i].score); } } //关闭文件 fclose(fp); return 0;}
- C语言的文件操作相关函数
- C语言有关文件操作的函数
- c语言文件的几个操作函数
- C语言文件操作函数的编写
- C语言-文件操作的函数
- C语言的函数与文件操作
- C语言文件操作函数
- C语言文件操作函数
- C语言文件操作函数
- 文件操作函数 C语言
- 文件操作函数 C语言
- C语言文件操作函数
- C语言文件操作函数
- C语言文件操作函数
- C语言文件操作函数
- C语言文件操作函数
- c语言文件操作函数
- C语言文件操作函数
- n从1开始,可以对n加1,或者加倍,要使n为某个数的最少步数
- Hibernate一级缓存【Hibernate】
- python中的reduce函数
- windows系统清理与维护
- Des 加密处理 iOS 和 安卓 与服务器 处理时 遇到的 补位问题
- C语言-文件操作的函数
- Android绘图机制(二) ViewGroup类
- spring事务控制【Spring】
- IDDFS--UESTC - 577 分数拆分
- Java序列化和反序列化
- 一张图教你看懂BAT三大巨头移动互联网布局
- SpringBeans【Spring】
- C#委托(一)
- 我的iOS一年半经验