calloc也可以动态分配内存
这个函数可以把动态分配内存的内容
设置成0
为了使用这个函数也需要包含stdlib.h
头文件
为了动态分配5个整数类型存储区需要使用
下面的语句
calloc(5, sizeof(int))
其中5表示存储区的个数,sizeof(int)表示
单个存储区的大小
这个函数的返回值就是分配好的第一个
存储区的地址
这个函数也可能失败,如果失败返回值是NULL
realloc函数可以改变动态分配内存里的
存储区个数
尽量少使用这个函数
文件里都采用二进制方式记录数字
如果文件里所有二进制数字都来自于字符就
把这种文件叫做文本文件
文本文件以外的所有文件都叫做二进制文件
文本文件可以看做是二进制文件
C语言提供了两种操作文件的方法
一种方法只能操作文本文件(文本方式)
另外一种方法可以操作所有文件(二进制方式)
文件操作基本步骤
1.打开文件(fopen)
2.操作文件(fread/fwrite)
3.关闭文件(fclose)
fopen函数需要两个参数
第一个参数代表文件路径
第二个参数表示打开文件的方式
(决定程序里可以对文件做
什么操作)
打开方式有如下选择
“r” 只能查看文件内容不能修改
只能从文件头开始查看
如果文件不存在打开会失败
“r+” 比"r"多了修改文件内容的功能
“w” 只能修改文件内容不能查看
只能从文件头开始修改
如果文件不存在就创建文件
如果文件存在就删除文件里的
所有内容
“w+” 比"w"多了查看文件内容的功能
“a” 只能修改文件内容不能查看
只能在文件原有内容的末尾追加
新内容
如果文件不存在就创建文件
如果文件已经存在不会修改
文件原有内容
“a+” 比"a"多了查看文件内容的功能
“b"也是一种打开方式
这种打开方式可以和上面的任何一种打开
方式混合使用
如果程序里采用二进制方式操作文件就应该
在打开方式里加上"b”
fopen函数的返回值必须记录在文件指针里
程序里只能使用文件指针表示打开的文件
fopen函数有可能失败,如果失败它的返回值
是NULL
fclose函数用来关闭文件
如果程序里不再使用某个文件了就必须
使用fclose函数关闭它
fclose函数需要文件指针作为参数
文件关闭后文件指针成为野指针,必须恢复成
空指针
文件操作分为两种
一种是把内存里一组连续存储区的内容拷贝
文件里(写文件)
另外一种是把文件里一组连续存储区的内容
拷贝到内存里(读文件)
fread函数以二进制方式对文件进行读操作
fwrite函数以二进制方式对文件进行写操作
这两个函数都需要四个参数
第一个参数代表内存里第一个存储区的地址
第二个参数表示单个存储区的大小
第三个参数表示希望操作的存储区个数
第四个参数表示文件指针
它们都有返回值,返回值表示实际操作
的存储区个数
以下两个函数可以以文本方式操作文件
fprintf函数可以把数字记录到文本文件里
这个函数的第一个参数是一个文件指针,后面
的参数就是printf函数的参数
fscanf函数可以从文本文件里获得数字并记录
到存储区里
这个函数的第一个参数是一个文件指针,后面
的参数就是scanf函数的参数
这两个函数不适合处理数据量大的文件
计算机里为每个打开的文件保留一个整数,
这个整数表示下一次读写的开始位置
这个位置一定在两个相邻字节之间
这个整数表示文件头到这个位置之间
包含的字节个数
这个整数叫做文件的位置指针
每当从文件里获得n个字节或向文件里写入
n个字节后位置指针都会向后移动n个
字节
ftell函数可以获得位置指针的数值
rewind函数可以把位置指针移动到文件
开头(位置指针的数值变为0)
fseek函数可以把位置指针移动到文件里
的任何位置
fseek函数里需要指定一个基准位置以及
目标位置到基准位置之间的距离
SEEK_SET 0 把文件头作为基准位置
SEEK_CUR 1 把当前位置作为基准位置
SEEK_END 2 把文件尾作为基准位置
如果目标位置在基准位置后距离用非负数
表示
如果目标位置在基准位置前距离用负数
表示
距离的绝对值就是两个位置之间包含的
字节个数