文件io
文件IO
一、文件io必备基础知识
>2026.9.23更新
以下无特殊说明均正对linux系统
1.数据结构补充:有关于给出二叉树两种遍历方式让求另一种遍历的顺序是什么的题目可以通过画表格来解决。(前序,后续,中序)
2.32位系统的地址总线是怎么工作的:最大的寻址数为2^32,每一个地址对应一个字节的数据。
3.什么是系统软件:与计算机硬件共同为计算机的重要组成部分,包括了内核文件和根文件系统(linux系统下)。
4.FAT32和NTFS两种文件系统的区别:
5.分区如果坏了数据要怎么恢复:
6.控制硬件只能依靠寄存器,控制物理地址只能通过寄存器。寄存器为计算机中直接于cpu通信的存储器,速度快,但是容量小。
7.内存的分区示意图示:
8.硬盘为rom,内存条为ram
9.mmu是什么东西:内存管理单元,地址映射加上权限设置
10.为什么计算机台式机有四个内存插槽先插2,4通道:前两后两为两个通道,这样可以组成双通道
11.linux系统内核的作用:提供系统函数接口。
12.文件系统和内核是合作关系,二者不可缺一。
13.linux中常见的文件类型:l(软链接文件);)-(规则文件)d(目录文件) p(管道文件) s(套接字文件)c(字符设备文件) b(块设备文件)
14.rwx|rwx|rwx:所有者权限|所属组权限|其他用户权限
15.linux系统目录和文件夹的区别是什么:目录只是地址类信息。
16.标准io和系统io的区别:标准在系统的基础上建立的。
17.空间换时间新案例:缓冲区,提高cpu工作效率。
18.缓冲区的概念:和文件系统有关,一般分页为4kB
二、文件io中的常用标准库函数
1.fopen()
函数原型
FILE *fopen(const char*pathname,const char*mode)
我们可以看到,这个函数的返回值是FILE类型的,这是一个宏定义,可以在man手册中一层层剥离查询,该函数的目的是打开文件,打开时会新建一个链表对应的元素并插入到链表的开头。并且当调用函数时会自动打开标准输入、出、错误处理文件并加载到链表中,在链表中记录文件的信息等。
使用方法
1.pathname处传入文件绝对地址(以字符类型)
2.mode传入以下字符:
* r:只读类型,光标在开头
* r+:读写,光标在开头
* w:清空写,光标在开头
* w+:清空,不在则新建,光标在开头
* a:在文件末尾追加,看不到前面的,不在则新建,光标在末尾
* a+;在文件末尾追加,看得到前面的,不在则建,光标在末尾
3.成功打开返回值是对应链表的地址,否则返回NULL.
2.fclose
函数原型
int fclose(FILE *stream);
使用方法
1.传入的为文件链表地址。
2.不可以多次使用。
3.成功返回0,失败返回EOF
3.fgetc和fgets
函数原型
char *fgets(char *s, int size, FILE *stream);
int fgetc(FILE *stream);
使用方法
1.fgets传入元素分别是新的数组地址,多少字节,文件对应链表的地址,成功返回s地址,否则返回NULL
2.fgetc传入文件对应链表中的地址,成功返回对应的ascall中的值,失败返回EOF。
3.getchar自动取输入缓冲区的字符,返回对应的ascall数值。

浙公网安备 33010602011771号