程序二:保存从键盘输入的数据#include <stdio.h> #include <string.h> int main(){ FILE *fp =NULL; //文件指针 unsigned int i; char ch='n'; char ch1[]="This is a Test!"; char re; fp=fopen("a.txt","r"); //r读,w写 if(fp != NULL){ printf("文件打开成功!\n"); printf("strlen(ch1) = %d\n",strlen(ch1)); //写字符串 for(i=0;i<strlen(ch1);i++){ fputc(ch1[i],fp); } //读文件中的所有字符 re=fgetc(fp); while(re != EOF){ putchar(re); re=fgetc(fp);//获取下一个字符 } printf("\n"); printf("文件读写成功!\n"); } else{ printf("文件打开失败!按任意键退出。\n"); getchar(); return 2; } fclose(fp); printf("ch = %c\n",ch); return 0; }
#include <stdio.h> void main(){ FILE *fp=fopen("readstring.txt","w+"); //w+ 读写模式 char ch; printf("输入需要保存的字符串:\n"); if(fp != NULL){ ch=getchar(); while(ch != '\n'){ fputc(ch,fp); ch=getchar(); } printf("读取输入的数据:\n"); rewind(fp); //将文件指针重新放到文件的开头 ch=fgetc(fp); while(ch != EOF){ //EOF文件末尾 (-1) putchar(ch); ch=fgetc(fp); } printf("\n"); } else{ printf("文件创建或打开失败!\n"); } fclose(fp); }
#include <stdio.h> void readFile(FILE *p){ char ch[100]; fgets(ch,sizeof(ch),p); printf("读到的字符串为:%s\n",ch); } void writeFile(FILE *p1){ char ch[]="Welcome to China!\n"; fputs(ch,p1); printf("字符串写入成功!\n\n"); } void main(){ FILE *fp = fopen("readAndWrite.txt","w+"); if(fp != NULL){ writeFile(fp); rewind(fp); readFile(fp); } else printf("文件创建失败!\n"); fclose(fp); }
程序二:读写结构体信息#include <stdio.h> #include <string.h>
//文件写数据 void writeFile(FILE *p){ char *ch="Welcome"; fwrite(ch,strlen(ch),1,p); //参数:要写的字符串的首地址,块的长度,次数,写的文件地址 printf("字符串写入成功!\n"); }
//文件读数据 void readFile(FILE *p){ char ch[8]; fread(ch,strlen(ch),1,p); printf("读取到的字符串为:%s\n\n",ch); }
void main(){ FILE *fp=fopen("fwrite.txt","w+"); if(fp != NULL){ writeFile(fp); rewind(fp); readFile(fp); } else printf("文件创建失败!\n"); fclose(fp); }
#include <stdio.h> void main(){ int i; struct student{ char name[20]; int age; float score; }stu[3]={{"Liming",19,65.5f},{"Lihua",23,55.5f},{"Danny",29,79.5f}}; FILE *fp = fopen("student.dat","wb+"); if(fp != NULL){ struct student stu1[3]; for(i=0;i<3;i++){ fwrite(stu+i,sizeof(struct student),1,fp); } printf("数据写入成功!\n"); rewind(fp); for(i=0;i<3;i++){ fread(&stu1[i],sizeof(struct student),1,fp); } for(i=0;i<3;i++){ printf("姓名:%s 年龄:%d 成绩:%.2f\n",stu1[i].name,stu1[i].age,stu[i].score); } } printf("\n"); fclose(fp); }
#include <stdio.h> void main(){ FILE *fp=fopen("data.dat","w+"); int a=3,b=4; if(fp != NULL){ fprintf(fp,"%d#%d;",a,b); printf("文件写入成功!\n"); rewind(fp); a=0; b=0; fscanf(fp,"%d#%d;",&a,&b); printf("a = %d,b = %d\n",a,b); } }
#include <stdio.h> void main(){ int i; int m,n; FILE *fp = fopen("arry.dat","w+"); int a[3][2]={{1,2},{3,4},{5,6}}; if(fp != NULL){ for(i=0;i<3;i++){ fprintf(fp,"%d,%d\n",a[i][0],a[i][1]); } printf("数据写入成功!\n"); rewind(fp); for(i=0;i<3;i++){ fscanf(fp,"%d,%d\n",&m,&n); printf("%d %d\n",m,n); } } fclose(fp); }
#include <stdio.h> void main(){ FILE *fp=fopen("student.dat","r"); struct student{ char name[20]; int age; float score; }stu; if(fp != NULL){ //文件定位
//参数:文件地址,位移量,开始位置(SEEK_SET默认是从前面开始) fseek(fp,sizeof(struct student)*2,SEEK_SET); fread(&stu,sizeof(struct student),1,fp); printf("姓名:%s 年龄:%d 分数:%.2f\n",stu.name,stu.age,stu.score); } fclose(fp); }