13.文件指针

本文深入探讨文件位置指针的概念与使用方法,并详细解释宏操作符、条件编译、多文件编程、结构体等核心概念。通过实例演示十六进制转十进制的宏实现。
文件位置指针是一个整数,他用来记录下一次
    对文件进行读写操作的时候开始位置到
文件头之间包含多少个字节
当从文件中读出n个字节或者向文件中写入n个字节
    的之后文件位置指针都会自动向后移动n个
字节


可以在程序中使用函数察看或者修改文件位置
    指针的数值


ftell函数可以察看文件位置指针的数值  ftell(p_file));
返回值就是当前位置指针的数值


rewind函数可以把文件位置指针的数值设置成0   rewind(p_file);


fseek函数可以把文件位置指针调整到文件中  
     fseek(p_file, 2, SEEK_SET);
    任何位置上
可以采用三种办法指定文件中某个位置
三种方法的本质一样,都是需要指定一个基准
    位置,然后指出目标位置到基准位置
之间的距离(如果目标位置在后则距离
是正的,否则是负的)


SEEK_SET   0     文件头作为基准位置
SEEK_CUR   1     当前位置指针位置作为基准位置
SEEK_END   2     文件尾作为基准位置


#define也是一个预处理指令
这个预处理指令可以用来给数字起名字
这些名字叫做宏


宏定义语句中要把宏名称写在前边
宏名称应该全用大写英文字母
宏定义语句里不要出现赋值操作符
宏名称里不能有空格


编译器会首先把程序中的宏名称替换成它所代表
    的内容,然后再编译
在真正进行编译的时候宏名称已经不存在了


可以在gcc命令中使用-D选项定义宏
这种方法可以在编译的时候决定宏所代表的数字


宏还可以用来给一个计算公式起名字
计算公式里含有未知数字,使用宏的参数表示
    这些未知数字
宏的参数没有类型
带有参数的宏采用两次替换的方式进行处理


函数可以有独立于其他函数的私有存储区而
    宏不可以


因为宏没有自己的返回值存储区,所以如果希望
    把宏当成数字来使用的话就需要把它编写
成一个表达式


宏同样没有形式参数
对宏参数的修改实际修改的是包含宏的函数内部
    的存储区


因为宏没有自己的返回值所以不能保证优先
    计算表达式中宏内部的操作符
所有写成表达式的宏都应该把表达式写在一对
    小括号里,这样会强制优先计算宏内部的
操作符


因为宏没有形式参数所以不能保证优先计算参数
    内部的操作符
宏表达式里所有代表数字的参数都应该写在一对
     小括号里边,这样才能保证优先计算参数
内部的操作符


不要把自增自减的计算结果作为宏的参数使用,
    宏内部如果多次使用这个参数则结果不确定




预习:
    1.宏操作符
2.条件编译
3.多文件编程
4.结构体


作业:
    1.编程根据用户提供的一个代表十六进制的
字符计算出对应的十进制数字并把结果打印
在屏幕上
(采用宏实现)











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值