C语言文件基本操作
1.用文本方式储存‘1’,‘0’,‘2’存入文件,然后用二进制方式从文件开头读出一个short型数据,并验证结果是否正确
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 int main() 5 { 6 short m; 7 FILE *fp; 8 if((fp=fopen("C:\\vc\\sample.txt","r"))==NULL) 9 { 10 printf("打开文件失败\n"); 11 exit(1); 12 } 13 fputc('1',fp); 14 fputc('2',fp); 15 fputc('3',fp); 16 fclose(fp); 17 if((fp=fopen("C:\\vc\\sample.txt","r"))==NULL) 18 { 19 printf("打开文件失败\n"); 20 exit(1); 21 } 22 fread(&m,2,1,fp); 23 fclose(fp); 24 printf("%d\n",m); 25 return 0; 26 }
也可以使用fwrite()将3个字符写入文件
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 short m; 6 FILE *fp; 7 if((fp=fopen("C:\\vc\\sample.txt","r+"))==NULL) 8 { 9 printf("打开文件失败\n"); 10 exit(1); 11 } 12 char str[]= {'1','0','2'}; ///单字符形式的初始化 13 fwrite(str,1,3,fp); 14 rewind(fp); 15 fread(&m,2,1,fp); 16 fclose(fp); 17 printf("%d\n",m); 18 return 0; 19 } 20 ///用“r+",“w+”的方式打开文件写完数据接着再读出来,不需要关闭文件再重新打开
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 short a; 6 FILE *fp; 7 if((fp=fopen("C:\\vc\\sample.txt","w+"))==NULL) 8 exit(1); 9 fprintf(fp,"%d\n",10000);//长度为7字节,文本方式写入,内存中00110001 00110000 10 rewind(fp); 11 a=getw(fp); 12 printf("%d\n",a);//a的值为12337,short 取两个字节 13 return 0; 14 }
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 short a; 6 FILE *fp; 7 if((fp=fopen("C:\\vc\\sample.txt","w+"))==NULL) 8 exit(1); 9 putw(12337,fp);///将整数写入fp指向的文件,二进制写入内存中 10 ///在内存中存为 00110001 00110000(由低位到高位) 11 rewind(fp); 12 fscanf(fp,"%d",&a); 13 printf("%d\n",a); 14 return 0; 15 }
以下文件的输出结果是(123,45)
1 #include<stdio.h> 2 int main() 3 { 4 FILE *fp; 5 int i,k,n; 6 fp=fopen("C:\\vc\\c.dic","w+"); 7 for(i=1; i<6; i++) 8 { 9 fprintf(fp,"%d",i);///文本方式按format所对应的格式字符串中规定的格式,将输出列表中的每一项输出到fp所对应的文件中 10 if(i%3==0) 11 fprintf(fp,"\n"); 12 } 13 rewind(fp);///读写转换 14 fscanf(fp,"%d%d",&k,&n);///读取整型实型数据时,若遇到空格,Tab或者换行键则会将他们当做分隔符读出来丢弃,然后继续读取后面的数据 15 printf("%d,%d\n",k,n); 16 fclose(fp); 17 return 0; 18 }
把a.dic文件中的内容复制到b.dic中
1 #include<stdio.h> 2 #include<stdlib.h> 3 void main() 4 { 5 FILE *in,*out; 6 char ch; 7 if((in=fopen("C:\\vc\\a.dic","r"))==NULL) 8 { 9 printf("cannot open infile\n"); 10 exit(0); 11 } 12 if((out=fopen("C:\\vc\\b.dic","w"))==NULL) 13 { 14 printf("cannot open infile\n"); 15 exit(0); 16 }///打开两个文件 17 ch=fgetc(in); 18 while(!feof(in)) 19 { 20 fputc(ch,out); 21 ch=fgetc(in); 22 } 23 fclose(in); 24 fclose(out); 25 }
文本方式读取一段文字
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 FILE *fp; 6 char ch; 7 if((fp=fopen("C:\\vc\\a.dic","r"))==NULL) 8 { 9 printf("打开文件失败\n"); 10 exit(1); 11 } 12 while(1) 13 { 14 ch=fgetc(fp); 15 putchar(ch); 16 if(ch==EOF) 17 break; 18 } 19 fclose(fp); 20 return 0; 21 }
改写之后的程序:
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 FILE *fp; 6 char ch; 7 if((fp=fopen("C:\\vc\\a.dic","r"))==NULL) 8 { 9 printf("打开文件失败\n"); 10 exit(1); 11 } 12 ch=fgetc(fp); 13 while(!feof(fp)) 14 { 15 putchar(ch); 16 ch=fgetc(fp); 17 } 18 fclose(fp); 19 return 0; 20 }
计算该文件内容的字节数
1 #include<stdio.h>///计算该文件内容的字节数 2 int main() 3 { 4 FILE *fp; 5 long int n; 6 fp=fopen("C:\\vc\\b.dic","rb"); 7 fseek(fp,0,SEEK_END);///读写位置指针移动到了文件尾 8 n=ftell(fp); 9 fclose(fp); 10 printf("%ld",n); 11 return 0; 12 }