c语言解析系列(7)文件和动态内存分配和指向它的指针变量

I文件

程序在执行完各种操作之后,需要将程序运行的结果保存以便随时取用,这就需要将程序运行结果保存入文件。

保存文件前需要知道

(一)文件的打开(创建)方式

    头文件 #include<stdlib.h>

定义 文件指针 FILE *fp

         fp=fopen(“文件名”,”读写方式”)

         如果创建文件失败,返回一个空指针NULL

   一般用这样的方式创建文件

FILE *fp

If((fp=fopen(“file.Txt”,“r”))= =NULL);

{

Printf(“cannot open file”);

exit(0);//强制程序关闭

}

文件使用方式

含义

如果指定的文件不存在

 r(只读)

为了输入数据,打开一个已存在的文本文件

出错

rb(只读)

为了输入数据,打开一个二进制文本文件

出错

 

W(只写)

为了输出数据,打开一个已存在的文本文件

 

建立新文件

 

Wb(只写)

 

 

为了输出数据,打开一个二进制文件

 

建立新文件

 

 

r+(读写)

为了读和写,打开一个文本文件

出错

W+(读写)

为了读和写,建立一个新的文本文件

建立新文件

a(追加

向文本文件尾添加数据

出错

a+(读写)

为了读和写,打开一个文本文件

出错

Wb+(读写)

为了读和写,建立一个新的二进制文件

建立新文件

ab+(读写)

为读写打开一个二进制文件

出错

还有其他的读写方式,这是常用的读写方式

(二)将数据写入文件

1:用格式化的方式读写文件(这种方式不常用,知道就可以了)

fprintf(文件指针,格式字符串,输出表列)

fscanf(文件指针,格式字符串,输出表列)

2:以二进制方式向文件读写一组数据

 fread(地址,大小,次数,fp)

fwrite(地址,大小,次数,fp)

还有其他的方式,只不过那些功能不是太强大,就没有列出来

(三)文件的关闭方式

在文件读写完毕之后,就可以使用它关闭文件,通常fopenfclose成对出现

fp为定义的文件类型指针

   fclosefp);

G:动态内存分配和指向它的指针变量

以前就介绍过,全局变量是分配在内存中的动态储存区的,非静态的局部变量是分配在内存中的动态储存区的,这个储存区是一个称为“栈”的区域。C语言还允许建立内存动态分配区域,以存放一些临时用的数据,这些数据在需要时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由储存区的,称为“堆”区,可以根据需要,向系统申请所需空间大小,这些只能通过指针来引用。

内存的动态分配主要需要以下几个系统提供的库函数,分别是malloccallocreallocfree函数。

需要的头文件是#include<malloc.h>#include<stdlib.h>

(1):malloc(申请空间)calloc(申请的空间个数,每个空间的字节数)

使用模式:(类型名 *malloc(字节数)

     Int *q = Int *mallocsizeofint))//在此编译系统中申请一个int类型数据所需要的空间,想对一个数组申请空间可以用calloc函数,

   若申请504字节空间,可以用calloc50,4

如果申请不成功,返回一个空指针NULL

如果申请的空间不够用或者太大了,可以用下面的函数改写申请的空间。

2Realloc(原来申请的动态空间名字,大小)

例:对于用malloc申请的空间,可以这样改写

  Reallocq50

此时它已被改写为50字节空间,而不是一个int数据所需的空间,如果申请不成功,realloc返回一个空指针NULL

(1)    free(空间名)

对于申请的空间,若以后不再需要它,可以释放空间,就可以用它了

使用模式:freeq

free函数无返回值

以上的内容对于用链表处理大批量数据是非常有用的,是经常要用到的,所以别看他简单,其实吧内涵丰富,还需要仔细体会,感悟。

对于指针这一章节来说,它太灵活了,正是因为它的灵活,它才为c语言注入了生机,要想用一句话两句话把它说清,我认为很难,我发现越是到难得地方我就不知道如何用语言表达我的想法了,所以我觉的最重要的是大家在实践中体会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值