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 }

 

posted @ 2018-06-10 20:33  王陸  阅读(605)  评论(0编辑  收藏  举报