C语言读写文件
1.从键盘输入一些字符,逐个把它们送到磁盘上去,直到用户输入一个'#'
#include <stdio.h> #include <stdlib.h> int main() { FILE *fp; char ch,filename[10]; printf("请输入所用的文件名:"); scanf("%s",filename); if((fp=fopen(filename,"w"))==NULL) { printf("无法打开文件\n"); exit(0); } ch = getchar(); printf("请输入一个准备存储到磁盘的字符串(以#结束):"); ch = getchar(); while(ch!='#') { fputc(ch,fp); putchar(ch); ch = getchar(); } fclose(fp); putchar(10); return 0; }
2.将一个磁盘文件中的信息复制到另一个磁盘文件中。
#include <stdio.h> #include <stdlib.h> int main() { FILE *in,*out; char ch,infile[10],outfile[10]; printf("输入读入的文件的名字:\n"); scanf("%s",infile); printf("输入输出的文件的名字:\n"); scanf("%s",outfile); if((in=fopen(infile,"r"))==NULL) { printf("无法打开此文件\n"); exit(0); } if((out=fopen(outfile,"w"))==NULL) { printf("无法打开此文件\n"); exit(0); } while(!feof(in)) //如果未遇到输入文件的结束标志 { ch = fgetc(in); fputc(ch,out); //因为它不显示,所以显得奇怪 putchar(ch); } putchar(10); fclose(in); fclose(out); return 0; }
3.向文件写入字符串
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp; char str[3][10],temp[10]; int i,j,k,n=3; printf("Enter strings:\n"); for(i=0;i<n;i++) gets(str[i]); for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(strcmp(str[k],str[j])>0) k=j; if(k!=i) { strcpy(temp,str[i]); strcpy(str[i],str[k]); strcpy(str[k],temp); } } if((fp=fopen("t.txt","w"))==NULL) { printf("can't open file!\n"); exit(0); } printf("\nThe new sequence:\n"); for(i=0;i<n;i++) { fputs(str[i],fp); fputs("\n",fp); printf("%s\n",str[i]); } fclose(fp); return 0; }
4.从文件中读取字符串
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { FILE *fp; char str[3][10]; int i=0; if((fp=fopen("t.txt","r"))==NULL) { printf("can't open file!\n"); exit(0); } while(fgets(str[i],10,fp)!=NULL) { printf("%s",str[i]); i++; } fclose(fp); return 0; }
5.二进制写
#include <stdio.h> #define SIZE 3 struct Student_type { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; void save() { FILE *fp; int i; if((fp=fopen("t.txt","wb"))==NULL) { printf("can't open file\n"); return; } for(i=0;i<SIZE;i++) { if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1) printf("file write error\n"); } fclose(fp); } int main() { int i; printf("Please enter data of students:\n"); for(i=0;i<SIZE;i++) { scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr); } save(); return 0; }
6.二进制读
#include <stdio.h> #include <stdlib.h> #define SIZE 3 struct Student_type { char name[10]; int num; int age; char addr[15]; }stud[SIZE]; int main() { int i; FILE *fp; if((fp=fopen("t.txt","rb"))==NULL){ printf("can't open file\n"); exit(0); } for(i=0;i<SIZE;i++) { fread(&stud[i],sizeof(struct Student_type),1,fp); printf("%-10s %4d %4d %-15s\n",stud[i].name,stud[i].num,stud[i].age,stud[i].addr); } fclose(fp); return 0; }
7.rewind函数
#include <stdio.h> int main() { FILE *fp1,*fp2; fp1 = fopen("t1.txt","r"); fp2 = fopen("t2.txt","w"); while(!feof(fp1)) putchar(fgetc(fp1)); putchar(10); rewind(fp1); while(!feof(fp1)) fputc(fgetc(fp1),fp2); fclose(fp1); fclose(fp2); return 0; }
8.