图片制作视频教程,百度关键词seo年度费用,企业网站建设需要哪些费用,瑞安做网站的公司目录
字符方式读入文件
数据块方式读写文件
文件定位与随机读写
文件中数据的修改 字符方式读入文件
1.向文件中写入#xff08;输入字符#xff09; 用 fputc 函数或 puts 函数可以把一个字符写到磁盘文件中去。
int fputc(int ch,FILE * fp) ch 是要输出的字符#…目录
字符方式读入文件
数据块方式读写文件
文件定位与随机读写
文件中数据的修改 字符方式读入文件
1.向文件中写入输入字符 用 fputc 函数或 puts 函数可以把一个字符写到磁盘文件中去。
int fputc(int ch,FILE * fp) ch 是要输出的字符他可以是一个字符常量也可以是一个字符变量fp是文件指针变量已经指向了一个由fopen函数打开的文件。 功能fputcchfp函数将字符输入到fp所指向的流式文件中去。如果输出成功返回值就是输入的字符失败则返回EOF。
从键盘输入遗传字符以回车符\n结束然后输入到磁盘文件中去
#includestdio.h
#includestdlib.h
int main()
{//从键盘输入遗传字符以回车符\n结束然后输入到磁盘文件中去FILE * fp;char ch;if((fpfopen(output1.txt,w))NULL){printf(无法创建文件);exit(0); }while((chgetchar())!\n){fputc(ch,fp);}fclose(fp);return 0;
}2.从文件中读出一个字符 用 fgetc 函数或者 getc 函数可以从磁盘中读出一个字符。
int fgetc(FILE * fp) 从磁盘文键逐个读入字符并在终端输出
#includestdio.h
#includestdlib.h
int main()
{//从磁盘文键逐个读入字符并在终端输出FILE * fp;char ch;if((fpfopen(output1.txt,r))NULL){printf(无法打开文件\n);exit(0); } while((chfgetc(fp))!EOF){putchar(ch);}fclose(fp);return 0;
}3.向文件中写入一个字符串 用 fputs 函数可以把一个字符串输入到指定的流式文件中其原型为
int fputs(char * fp,FILE * stream) 其中string为字符串stream为文件指针。 把指针string所指向的字符串输出到文件指针stream所指向的文件中但字符串结束符‘\0’不输出。 从键盘输入若干行字符把他们输出到磁盘文件中保存起来。
#includestdio.h
#includestdlib.h
int main()
{//从键盘输入若干行字符把他们输出到磁盘文件中保存起来。FILE * fp;char string[81];if((fpfopen(data.txt,w))NULL){printf(未找到此文件!);exit(0); } while(gets(string)!NULL)//ctrlZ结束 {fputs(string,fp);fputc(\n,fp);//在每个字符串后加一个换行符 }fclose(fp);return 0;
}数据块方式读写文件
使用数据块的方式对二进制问价进行读写操作涉及的函数有两个fread() 和 fwrite() 。
建立学生档案文件每个记录包括学生的姓名性别年龄和入学总分
#includestdio.h
#includestdlib.h
struct student
{char name[10];char sex;int age;float score;
};
int main()
{FILE * fp;struct student stud;char str[80],chy;if((fpfopen(stud2.rec,wb))NULL)//二进制只写方式打开 {printf(无法打开文件!\n);exit(0);}while(chy||chY){printf(输入姓名);gets(stud.name);printf(输入性别);gets(str);stud.sexstr[0];printf(输入年龄);gets(str);stud.ageatoi(str);//年龄将字符串转换为整型 printf(输入分数);gets(str);stud.scoreatof(str);//分数将字符串转换为浮点型fwrite(stud,sizeof(stud),1,fp);//写入数据到文件do{printf(继续输入y/n? );gets(str);chstr[0];} while(!(chy||chn||chY||chN));}fclose(fp);return 0;
}从磁盘文件按记录读取数据并显示读入的内容直到文件尾
#includestdio.h
#includestdlib.h
struct student
{char name[10];char sex;//M,或F int age;float score;
};
int main()
{//从磁盘文件按记录读取数据并显示读入的内容直到文件尾struct student stud;FILE * fp;if((fpfopen(stud2.rec,rb))NULL) {printf(无法打开文件stud2.rec!\n);exit(0); }while(fread(stud,sizeof(stud),1,fp)1){printf(\n姓名%s,stud.name);printf(\n性别%c,stud.sex);printf(\n年龄%d,stud.age);printf(\n分数%.2f,stud.score);} printf(\n);fclose(fp);return 0;
}文件定位与随机读写
文件的定位利用fesk和ftell函数编写程序测量一个文件的长度
#includestdio.h
#includestdlib.h
//文件的定位
//利用fesk和ftell函数编写程序测量一个文件的长度
long filesize(FILE * fp)
{long curpos,length;//当前文件读写位置指针相当于文件开头的位移量 curposftell(fp);//保存文件的当前读写位置指针 fseek(fp,0L,SEEK_END);//文件读写位置指针置于文件尾端lengthftell(fp);//求文件长度fseek(fp,curpos,SEEK_SET);//恢复文件的原读写位置的指针return length;
}
long filesize(FILE * stream);
int main()
{FILE * stream;char filename[10];printf(\n输入文件名);scanf(%s,filename);if((streamfopen(filename,rb))NULL){printf(无法打开文件%s\n,filename);exit(0);}printf(%s的文件大小是%ldbyte\n,filename,filesize(stream));fclose(stream);return 0;
}随机读写
由之前建立的学生入学档案的磁盘文件stud.rec中假设学生按照分数升序排列。 现要求设计一个程序输入一个整型值给n输出分数最高的n个学生记录即排在尾部的n个学生记录
#includestdio.h
#includestdlib.h
struct student
{char name[10];char sex;//M,或F int age;float score;
};
//由之前建立的学生入学档案的磁盘文件stud.rec中假设学生按照分数升序排列。
//现要求设计一个程序输入一个整型值给n输出分数最高的n个学生记录即排在尾部的n个学生记录
int main()
{FILE * fp;struct student stud;int n;if((fpfopen(stud.rec,rb))NULL){printf(无法打开文件);exit(0); } printf(\n请输入一个整数:);scanf(%d,n);fseek(fp,-n*sizeof(stud),SEEK_END); //定位到倒数第n个学生记录while(fread(stud,sizeof(stud),1,fp)1){printf(\n姓名%s,stud.name);printf(\n性别%c,stud.sex);printf(\n年龄%d,stud.age);printf(\n分数%.2f,stud.score); } return 0;
}文件中数据的修改
将之前的成绩表中的女生成绩加五分
#includestdio.h
#includestdlib.h
struct student
{char name[10];char sex;//M,或F int age;float score;
};
int main()
{//从磁盘文件按记录读取数据并显示读入的内容直到文件尾struct student stud;FILE * fp;if((fpfopen(stud.rec,rb))NULL) {printf(无法打开文件stud2.rec!\n);exit(0); }while(fread(stud,sizeof(stud),1,fp)1){printf(\n姓名%s,stud.name);printf(\n性别%c,stud.sex);printf(\n年龄%d,stud.age);printf(\n分数%.2f,stud.score);} printf(\n);fclose(fp);return 0;
}输入一个学生的姓名编写程序将stud.rec中该学生的记录删除
#includestdio.h
#includestdlib.h
#includestring.h
struct student
{char name[10];char sex;//M,或F int age;float score;
};
//输入一个学生的姓名编写程序将stud.rec中该学生的记录删除
int main()
{char name[10];FILE * fp_old,* fp_new;struct student stud;if((fp_oldfopen(stud.rec,rb))0)//读方式打开原数据文件 {printf(\n不能打开文件);exit(0); }if((fp_newfopen(stud3.rec,wb))0)//写方式创建新数据文件 {printf(\n不能创建文件);exit(0); } printf(请输入要删除的学生姓名);gets(name);while(fread(stud,sizeof(stud),1,fp_old)1){//在原文件中读取一个学生记录在stud中if(strcmp(stud.name,name)!0){fwrite(stud,sizeof(stud),1,fp_new); } } fclose(fp_old);fclose(fp_new);remove(stud.rec);//删除原文件rename(stud3.rec,stud.rec); //将新文件重命名 return 0;
}向文件中插入数据
#includestdio.h
#includestdlib.h
#includestring.h
struct student
{char name[10];char sex;//M,或F int age;float score;
};
int main()
{FILE * fp;struct student x,t{Alex,f,20,566};if((fpfopen(stud.rec,ab))0){printf(\n\t无法打开文件!\n);exit(0);}fread(x,sizeof(struct student),1,fp);//从文件中读一条学生记录fseek(fp,0L,SEEK_END); fwrite(t,sizeof(struct student),1,fp);//将t中的数据追加到文件尾rewind(fp);while(fread(x,sizeof(struct student),1,fp)1){printf(\n%15s%4c%8d%8.2f,x.name,x.sex,x.age,x.score); } fclose(fp);return 0;
}