c语言之文件学习

文件是相关信息的集合

文字信息、声音信息、图形信息

文件的取名:主文件名.扩展名

文件的分类:(c 程序中)

A:文本文件

B:二进制文件(data)把结构体的信息写入的文件

c程序可以对文件进行操作

读操作:从文件里面把文件的内容读取出来,并输出到屏幕。

它不会改变文件的内容

写操作:把一些内容往文件里面写入。

它一定会改变文件的内容

c程序如何对文件操作的呢?

通过文件指针和一些函数对文件进行操作的

什么是文件指针?

这个指针它是用来存放文件的首地址,这个指针是专用来指向文件的。

文件指针定义的格式:

FILE *指针名;

Ex:    FILE *fp; //定义了一个指针fp,这个指针以后只能指向文件,以后要把文件的首地址赋给该指针.

如何给文件指针赋值:一般是通过fopen函数来赋值

Fopen功能:

A:打开一个文件。

B:同时会返回打开的那个文件的首地址。

格式:fopen(“要打开的文件名”,”打开的方式”);

C:该函数实际上就是地址

说明:

1、打开方式是表明打开文件之后要读还是要写

2、打开方式有几种:

        r:要打开文件之后要读文件   read 读文本文件

w:要打开文件之后要写文件         write, 用新数据覆盖以前的内容

a:要打开文件之后要追加文件  append,把新的数据加到末尾

如果打开方式中加了一个b就表示对二进制文件进行操作

rb:要打开二进制文件,进行读

wb:要打开二进制文件,进行写

ab:要打开二进制文件,进行追加

3、如果打开的文件名中含有路径,里面的\要用“\\”来表示

fp=fopen(“打开的文件名”,”打开方式”);

 

fopen(“c:\\chen\\my.txt”,”r”);                   //打开my.txt文件并进行读操作

关闭文件:

1、通过fopen函数能够打开一个文件,然后对文件操作

2、操作完成后,一定要关闭文件

3、格式:fclose(文件指针名);

程序代码的一般格式:

FILE *fp;

fp=fopen(“打开的文件名”,”打开方式”);把文件指针赋给具体文件

然后对文件进行操作

fclose(fp);

 

 

对文件进行操作:

1、fgetc函数:从fp指向的文件里面读出一个字符,r

格式:字符型变量=fgetc(fp);                  //fp是一个文件指针

文件一定要以读的方式来打开/

2、fputc函数:向fp指向的文件里面写入一个字符w

格式: fputc(要写入的字符,fp);

文件一定要以写的方式来打开

3、fgets函数:从fp指向的文件里面读出一个字符串

格式:fgets(str,n,fp)

Str:表示存放字符串的数组

n:表示读出字符串的格式,它会读出n-1个字符,还有一个给\0

fp:文件指针

4、fputs函数:把字符串写入到fp所指向的文件中去

格式:

Fputs(str,fp);              //把str写入到fp里面去

5、专用于二进制文件操作的

A:fwrite函数:把一个结构体变量中的信息以变量的形式写入到指定文件里面去

格式:fwrite(&结构体变量名,sizeof(结构体类型),1,fp);

B:fread函数:从fp所指向文件中读出一条信息,存放在一个结构体变量中

格式:fread(&结构体变量名,sizeof(结构体类型),1,fp);

如何判断一个文件指针是否到了末尾

feof函数

格式:feof(fp);                  如果返回0没有到末尾,返回1说明到了末尾

 


如何从一个文件中把所有的字符都读出来

#include”stdio.h”
void main()
{
    FILE *fp;//还没有指向任何文件
    Char ch;
    //fp=fopen(“打开的文件名”,”打开方式”);
    fp=fopen(“c:\\chen\\my.txt”,”r”);//以读的方式来打开一个文本文件,并让指针fp指向这个文件
    while(!feof(fp))
    {                 //当文件没有读完时,就反复来读
    ch=fgetc(fp);//表示从fp指向的文件中读出一个字符
    printf(“%c”,ch);
    }
    fclose(fp);
}
 

Void main()
{
    FILE *fp;
    char ch[100];
    //fp=fopen(“c:\\chen\\you.txt”,”w”);//覆盖前面的内容。以前的都没有了
    fp=fopen(“c:\\chen\\you.txt”,”a”);//在以前内容后面添加
    Printf(“请输入一个字符串”);
    gets(ch);
    ch=’A’;//现在希望让用户来输入一些字符,然后把用户的字符写入到文件
    For(int i=0;ch[i];i++)
    {
        fputc(ch[i],fp);
    }
    fclose(fp);
}


void main()
{
    FILE *fp;
    Char str[100];
    Fp=fopen(“c”\\chen\\My.txt”,”r”);//以读的方式打开文件
    Fgets(str,5,fp);//从fp里面读取5-1个字符放在str中
    Puts(str);
    Fclose(fp);
}


void main()
{
    FILE *fp;
    char str[100]={“adjdwhdv12312”};
    fp=fopen(“c”\\chen\\My.txt”,”w”);//以写的方式打开文件
    fputs(str,fp);//
    fclose(fp);
}

 
typedef structworker
{
    Char Id[10];
    Char Name[10];
    Int Age;
}WOR;
Void main()
{ 
     FILE *fp;

WOR w[5]={

    {“w1”,”战士”,31},{“w2”,”战士”,34},{“w3”,”战士”,34},

    {“w4”,”战士”,34},{“w5”,”战士”,34}

};

    Fp=fopen(“c:\\chen\\worker.data”,”wb”);//表示打开一个二进制文件并进行写入
    For(inti=0;i<5;i++)
     {
        Fwrite(&w[i],sizeof(WOR),1,fp);       //通过fwrite文件进行写入
    }
    Fclose(fp);关闭文件
}

 

Void main

{     
    FILE *fp;

    Fp=fopen(“c:\\chen\\workker.data”,”rb”);//打开一个二进制文件进行读

    While(!feof(fp))
    {

        Fread(&w,sizeof(WOR),1,fp);

        Printf(“%s\t%s\t%s”,w.Id,w.Name,w.Age);

    }

    fclose(fp);
}

文件的定位

1、文件指针的定位

2、当文件刚刚打开的时候,文件指针会自动指向文件的开头

3、随着我们调用读写函数文件指针也会自动地向后移动

4、有时候为了编程需要,我们可能要通过程序手动地去移动文件指针

5、文件定位函数:

A、fseek函数:用来移动文件指针到文件某一个位置

格式:fseek(fp,移动的距离,参考点);

参考点:SEEK_SET从文件的开始位置、SEEK_END:从文件的末尾、SEEK_CUR:从文件的当前位置;位移量:正数表示向文件的尾部方向移动;负数表示向文件的开头方向移动。

rewind函数:把文件指针移动到开头

格式:rewind(fp);相当于fseek(fp,0,SEEK_SET);

void main()

{
    FILE *fp;
    char ch;
    fp=Fopen(“c:\\chen\\My.txt”,”r”);//以读的形式打开文件
    fseek(fp,2,SEEK_SET);//以文件开始位置为参考点,向文件尾部移动2个单位
    ch=fgetc(fp);//表示从文件里读出一个字符,这个函数有把指针向后移动的功能
    printf(“%c”,ch);
    fseek(fp,1,SEEK_CUR);//表示从文件当前位置为参考点向后移动一个单位
    ch=fgetc(fp);//表示从文件里读出一个字符,这个函数有把指针向后移动的功能
    printf(“%c”,ch);
    fseek(fp,-2,SEEK_END);//表示从文件尾部位置为参考点向前移动2个单位
    ch=fgetc(fp);//表示从文件里读出一个字符,这个函数有把指针向后移动的功能
    printf(“%c”,ch);
    fclose(fp);
}

 

总结:

函数名

功能

格式

fopen

打开一个文件

fopen(“要打开的文件名”,”打开方式”)

fclose

关闭一个文件

fclose(文件指针)

feof

判断一个文件指针是否到末尾

while(!feof(fp))

fgetc

从fp指向文件中读取一个字符ch=fgetc(fp)

ch=fgetc(fp)

fputc

从fp所指向文件中写入一个字符Ch=fputc(fp)

ch=fputc(fp)

fputs

写入一个字符串

fputs(str,fp)

fgets

读入一个字符串

fgets(str,n,fp)

fwrite

二进制文件的写(结构体)

fwrite(&结构体变量名,sizeof(结构体类型),1,fp)

fread

二进制文件的读(结构体)

fread(&结构体变量名,sizeof(结构体类型),1,fp)

fseek

文件指针定位函数

fseek(fp,位移量,参考点)

rewind

把文件指针移动到开头

Rewind(fp);相当于fseek(fp,0,SEEK_SET)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值