《C语言程序设计(第四版)》阅读心得(四 文件操作)

大兔子大兔子 提交于 2021-01-12 09:03:59

第10章  对文件的输入输出

 

函数名

调用形式

功能

fopen

fopen(“a1”,”r”);

打开一个文件

fclose

fclose( fp );

关闭数据文件

fgetc

fgetc( fp );

从fp指向的文件读入一个字符

fputc

fputc( ch,fp);

把字符ch写到文件指针变量fp所指向的文件中

fgets

fgets(str,n,fp);

从fp所指向的文件中读入一个长度为n-1的字符串,并在最后加一个’\0’字符,然后存放到字符数组str中

如果在读完n-1一个字符之前遇到换行符’\n’或文件结束符EOf,读入即结束,但将所遇到的’\n’也读入

fputs

fputs( str fp);

fputs( “China”,fp);

把str所指向的字符串写到fp所指向的文件中

fscanf

fcanf ( fp,”%d”,&i);

从fp所指向的文件中读取一个整数送到整型变量i

fprintf

fprintf( fp,”%d”,i)

将i按%d的格式输出到fp指向的文件中

fread

fread( buffer,size,count,fp)

Buffer是地址

从fp所指向的文件中buffer地址开始读取count个大小为size的字符。若成功返回count

fwrite

fwrite( buffer,size,count,fp)

向fp所指向的文件中buffer地址开始存入count个大小为size的字符。若成功返回count

rewind

rewind( fp )

使文件位置标记指向文件开头

fseek

fseek( fp, xxL,0)

0表示文件开始位置

1表示文件当前位置

2表示文件末尾位置

位移量是long型,不要忘记用L

 

 

1、打开与关闭文件

    fopen( 文件名,使用文件方式);

 

常用下面的方法打开和关闭一个文件

FILE *fp;  //指向文件型数据的指针变量
if( (fp = fopen("file1","r") )==NULL)
{
    printf(" Cannot open!");
    exit(0);  //终止程序
}

fclose (fp);  //关闭数据文件

 

2、顺序读写数据文件

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *fp;
    char ch,filename[10];
    scanf("%s",filename);
    if( (fp=fopen(filename,"w"))==NULL)
    {
        printf("打开失败\n");
        exit(0);
    }
    ch = getchar(); //接收最后的回车符
    ch = getchar(); //接收第一个字符
    while( ch!='#') //输入#循环结束
    {
        fputc(ch,fp);
        putchar(ch);
        ch = getchar();
    }
    fclose(fp);

    return 0;
}

 

3、随机读写数据文件

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define SIZE 10
 4 struct Studet
 5 {
 6     char name[10];
 7     int num;
 8     int age;
 9 }stud[SIZE];
10 void Save()
11 {
12     FILE *fp;
13     int i;
14     if( (fp=fopen("stu.dat","wb"))==NULL)
15     {
16         printf("Connot open\n");
17         exit(0);
18     }
19     for( i=0; i<SIZE; i++)
20         if( fwrite( &stud[i],sizeof( struct Studet),1,fp)!=1)
21           printf("Write Error\n");
22     fclose(fp);
23 }
24 int main()
25 {
26     int i;
27 
28     for( i=0; i<SIZE; i++)
29         scanf("%s%d%d",stud[i].name,&stud[i].num,&stud[i].age);
30     Save();
31     FILE *fp;
32     if( (fp=fopen("stu.dat","rb"))==NULL)
33     {
34         printf("Connot open\n");
35         exit(0);
36     }
37     for( i=0; i<10; i+=2)
38     {
39         fseek( fp, i*sizeof(struct Studet),0);
40         fread(&stud[i],sizeof(struct Studet),1,fp);
41         printf("%-10s%4d%4d\n",stud[i].name,stud[i].num,stud[i].age);
42     }
43     return 0;
44 }

大概文件操作最难也就考到这个地步了吧!

 

4、fseek

 SEEK_SET: 文件开头
  SEEK_CUR: 当前位置
  SEEK_END: 文件结尾
  其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2.
  简言之:
  fseek(fp,100L,0);把fp指针前移到离文件开头100字节处;
  fseek(fp,100L,1);把fp指针前移到离文件当前位置100字节处;
  fseek(fp,-100L,2);把fp指针后退到离文件结尾100字节处。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!