牛客 C++刷题day21

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。
简明的回答是:函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
常见文件系统 系统函数
  1. fcntl  文件控制  
  2. open  打开文件  
  3. creat  创建新文件  
  4. close  关闭文件描述字  
  5. read  读文件  
  6. write  写文件  
  7. readv  从文件读入数据到缓冲数组中  
  8. writev  将缓冲数组里的数据写入文件  
  9. pread 对文件随机读  
  10. pwrite  对文件随机写

6.惊了,父类可以调用子类的虚函数实现,我惊了。所以现在就可以理解为只要声明了virtual就告诉我们先别慌着编译,先确定是父类对象和子类对象在调用。也就是说,永远也不要以一个静态的眼光来看待。

7.printf函数如果参数列表个数多于表达式中的个数,则会忽略后面多余的参数。

quest clear!

猜你喜欢

转载自www.cnblogs.com/Tonarinototoro/p/11575272.html