1 C++中文件操作的一些函数的基本讲解:
fseek:
fseek函数是 用来设定文件的当前读写位置.
函数原型: int fseek(FILE *fp,long offset,int origin);
函数功能:把fp的文件读写位置指针移到指定的位置.
fseek(fp,20,SEEK_SET); 意思是把fp文件读写位置指针从文件开始后移20个字节.
ftell:
ftell函数是用来获取文件的当前读写位置;
函数原型: long ftell(FILE *fp)
函数功能:得到流式文件的当前读写位置,其返回值是当前读写位置偏离文件头部的字节数.
fgetc:
int fgetc(FILE *stream)
从文件流中读取一个字符并返回。成功返回读取的字符;读到文件末尾或失败返回-1。
char *fgets(char *str,int length,FILE *fp)
从fp指向的文件中,至多读length-1个字符,送入数组str中,如果在读入length-1个字符结束前遇到\n或EOF,读入即结束,字符串读入后在最后加一个'\0'字符。正常返回str指针,出错或遇到文件结尾,返回NULL指针。
int feof(FILE *stream)
判断文件是否读到末尾,未读到末尾返回0,读到末尾返回非0。一般不用,文件读到结尾,再去读一次,容易导致多读一次。不建议使用!
int fread(void* buffer,int num,int count,FILE *fp)
int fwrite(void*buffer,int num,int count,FILE *fp)
将buffer指向的数据写入fp指向的文件中,或是把fp指向的文件中的数据读到buffer中,num为每个要读写的字段数的字节数,count为要读写的字段数。成功返回读/写的字段数(count);出错或文件结束返回0。这两个函数不同于其它 函数,当我们试图用fread/fwrite去读写文本文件的时候,发现文本中的格式己经没有任何意义,只是一个普通的字符。它所进行的操作为二进制操作,通俗来说就是对一些文本标识符如'\0','\n'等已经不敏感了,这些文本标识符都被当做成一个二进制来读写。
void rewind(FILE *STREAM)
将文件指针重新指向一个流的开头。
2.栈变量的默认值的相关说明
栈空间上面的局部变量默认初始化为随机值。
全局整形变量和静态stati整形c变量默认初始值为0。
3.Turobo C的类型占字节数
TURBO C中int类型的变量占的字节数,不对齐
int 占2个字节 16位 long int 占4个字节 32位
4.优先队列
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。
在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。
首先要包含头文件#include<queue>
, 他和queue
不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队。
优先队列具有队列的所有特性,包括队列的基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的。
5.系统调用和库调用
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api。
简明的回答是:函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
常见文件系统 系统函数
- fcntl 文件控制
- open 打开文件
- creat 创建新文件
- close 关闭文件描述字
- read 读文件
- write 写文件
- readv 从文件读入数据到缓冲数组中
- writev 将缓冲数组里的数据写入文件
- pread 对文件随机读
- pwrite 对文件随机写
6.惊了,父类可以调用子类的虚函数实现,我惊了。所以现在就可以理解为只要声明了virtual就告诉我们先别慌着编译,先确定是父类对象和子类对象在调用。也就是说,永远也不要以一个静态的眼光来看待。
7.printf函数如果参数列表个数多于表达式中的个数,则会忽略后面多余的参数。
quest clear!