1、int fseek(FILE *pf,long offset,int fromwhere)
其中pf是文件指针,offset表示移动偏移量,它应是long型数据,使用常量时,要加上
后缀“L”;offset为负时,表示按相反方向计算偏移量,即为负时从当前位置向前计算,为正
时表示从当前位置向后计算。fromwhere表示从哪个位置开始计算偏移量,fromwhere可
用标识符或数字表示,有三种情况,如下图所示。函数的功能是将fp所指文件的读写指
针移动到fromwhere偏移offset的地方,设置成功,返回0,失败返回一1。
2、ftell(FILE*pf)
获取当前文件指针读写的位置。
3、rewind(FILE*pf)
使文件指针指向读写文件的首地址。
4、feof(FILE*pf)
判断文件的读写指针是否已经到达文件尾部,若是则返回非零值,否则返回0。
注意:在文件读取过程中,不可以用feof函数来判断文件是否结束。
(1)文本文件读取是否结束,判断返回值是否为EOF(fgetc),或者NULL(fgets)。
5、代码从.c编译、链接到.exe过程
链接可以发现被调用的函数未定义!
预处理:相当于根据预处理指令组装新的C/C++程序。经过预处理,会产生一个没有头文件(都已经被展开了)、宏定义(都已经替换了),没有条件编译指令(该屏蔽的都屏蔽掉了),没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。
编译:将预处理完的文件逐一进行一系列词法分析、语法分析、语义分析及优化后,产生相应的汇编代码文件。编译是针对单个文件编译的,只校验本文件的语法是否有问题,不负责寻找实体。
链接:通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。 链接程序的主要工作就是将有关的目标文件彼此相连接,也就是将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。在此过程中会发现被调用的函数未被定义。需要注意的是,链接阶段只会链接调用了的函数/全局变量,如果存在一个不存在实体的声明(函数声明、全局变量的外部声明),但没有被调用,依然是可以正常编译执行的。