专业见习实训03(linux胎教级教学)

03篇 前言:文件操作

1、回顾

命令 mkdir 创建文件夹 rm 删除 –r cp 复制文件
touch新建一个普通文件 clear 清屏 mv 剪切/重命名
ls 查看目录下的内容 man 查手册 cd 路径跳转
pwd 把当前所在的路径以绝对路径的形式进行打印
vim gcc cat 查看文件内容并打印在终端上面 su切换用户
sudo下放权限 passwd 设置密码 gedit

vim:四种 插入模式 低行模式 命令模式 可视模式
打开vim默认进入命令模式
插入模式:I i a A o O 这不同的按键代表了插入的位置不同
插入的效果不一样
我们使用vim 会插入模式 可以编写代码就可以了
低行模式:进入低行模式 在命令模式下 按住 shift+:
我们用的最多的就是wq! w:保存(写入) q:退出 !:强制
查找字符串 替换字符串
可视模式:进入可视模式 在命令模式 按下v键
主要对应三种功能 复制 剪切 删除
命令模式:删除 dd 撤销 u 反撤销 ctrl+r 复制yy 粘贴p

gcc编译的过程 四部分 预处理 编译 汇编 链接

2、文件操作

基于非缓冲区的文件操作 open
基于缓冲区的文件操作 fopen
open read close write
fopen fread fclose fwrite
这些多了fopen的函数是基于open做的封装
这些多了fread的函数是基于read做的封装
Linux下一切都是文件
文件主要有两种分类 ASCII码存储 二进制存储

三个文件 stdin标准输入(键盘) stdout标准输出(屏幕) stderr 标准错误(屏幕)
Scanf函数输入数据的时候必须以回车结尾 我们的数据才可以被写入进去
因为我们在通过键盘输入的时候 是对输入缓冲区做的操作 有个特定的条件回车 \n 才会被读取

输出缓冲区 printf(“hello”);Sleep(5);我们会把输出的数据先放在输出数据缓冲区里面 遇到特定的条件 才会在屏幕上进行输出 满了(程序正常结束) \n 强制刷新缓冲区fflush()

FILE *fopen(const char *pathname, const char *mode);
这个函数的功能就是按照mode打开文件名为pathname的文件
Pathname 就是文件的路径 可以是绝对路径 也可以是相对路径
Mode 有几种选择
r 以只读的方式打开文件 光标在文件的开头 不会新建文件
r+ 读写的方式打开文件 光标在文件的开头 不会新建文件
w 以只写的方式打开文件 光标在文件的开头 每次都会新建文件
w+ 以读写的方式打开文件 光标在文件的开头 每次都会新建文件
a 以追加的方式打开文件只可以写 光标在文件的末尾 如果文件不存在会新建
存在打开
a+ 以追加的方式打开 可以读写 光标在文件的末尾 如果文件不存在会新建
存在打开
返回值:打开成功 返回FILE类型的指针 打开失败 返回NULL

int fclose(FILE *stream);
关闭文件函数 只需要把打开文件的FILE类型的指针填写到参数里面即可关闭
返回值:正常关闭返回0 出错时返回非0

int fgetc(FILE *stream);
从文件里面读取一个字节 读取成功返回读取的数值 如果读到文件为了 返回EOF(-1)
Int fputc(int c,FILE *stream);
向文件输入一个字节 输入成功返回c 如果失败返回-1(EOF)
判断文件是否在末尾
Int feof(FILE *stream)
如果没有到末尾 返回0 文件结束没有内容了 返回非0

char *fgets(char *s, int size, FILE *stream);
从文件里面读取字符串 读取size-1个字符第size个字符为’\0’ 放到s这里面
成功 返回获得字符串的地址 失败或者到达文件尾返回NULL
“12345”
如果文件剩余的字符不够size个了 会读取失败 我们的s里面没有内容

int fputs(const char *s, FILE *stream);
如果文件里面有内容会被新输入的内容覆盖掉
如果想对文件进行添加需要将光标移动到文件末尾
往文件里面进行输入s这个字符串 成功 返回非0 失败返回 -1

int fseek(FILE *stream, long offset, int whence);
设置指针位置的函数
第一个参数 stream 文件描述符 offset 偏移量
whence 光标位置(SEEK_CUR 当前位置 SEEK_SET 文件开头 SEEK_END 文件尾)

格式化写入文件
int fprintf(FILE *stream, const char *format, …);
用法跟printf类似 只是第一个参数需要填写文件描述符
格式化读取文件
int fscanf(FILE *stream, const char *format, …);
用法跟scanf类型 只是多了一个参数 这个参数用来填写文件
读取比较苛刻 格式化写入的时候你怎么写入的 你就要怎么读取
如果不读取的特定值可以直接用%s进入读取 因为文件里面都是字符是可以不按照格式直接读取出来

void rewind(FILE *stream);
直接将光标移动到文件开头

long ftell(FILE *stream);
返回当前文件光标的位置 用来求文件大小的
返回值就是光标位置距离文件开头的距离 失败返回-1

int remove(const char *pathname);
删除文件操作 成功返回0 失败返回-1

上午剩下的时间 大家练习文件操作

文件操作
基于缓冲区的文件操作
fread fwrite
基于非缓冲区 读函数
ssize_t read(int fd, void *buf, size_t count);
fd:文件描述符 buf:用来存放读取出来的数据 count:读取几个字节

size_t fread(void ptr, size_t size, size_t nmemb, FILE stream);
ptr:读取内容存放的位置 size:读取几个字节 nmemb:读几次
nmemb
size个字符 stream 文件流
如果文件内容小于nmemb
size 我们会把文件的所有内容读取出来
不会说剩下不够了 就不读了
如果读取成功 会把读取到的字节数进行返回

ssize_t write(int fd, const void *buf, size_t count);
fd:文件描述符 buf:用来存放写入进去的数据 count:写入几个字节

size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
ptr:用来存放要写入数据的数组 size:写入多少个字节 nmemb:写入多少次
stream:文件流
成功返回写入的字节数 失败返回0

对文件进行写入操作时 如果光标后面有内容 我们会直接把后面的内容进行覆盖掉
对文件进行写入操作的时候需要注意光标所在位置 fseek 和 ftell来对该文件的字节数进行
测量
我们整个的基于缓冲区的文件操作的相关函数就已经讲完了

操作文件的系统
我们可以输入来进行文件的选择 1 可以查看文件的大小 2 查看文件的内容 3对文件内容进行修改
4 对文件进行删除
根据文件的路径来对该文件进行相应的查看 和 重写 和 删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值