PWN PWN PWN !!! 技巧 (5)

PWN PWN PWN !!! 技巧 (1)

PWN PWN PWN !!! 技巧 (2)

PWN PWN PWN !!! 技巧 (3)

PWN PWN PWN !!! 技巧 (4)

目录

简介:

fgets

fclose

fopen

fwrite

write

fread

read

总结:


简介:

紧接上续四部,这次准备记录一下常见的函数的功能(容易忘记,记录一手),好记性不如烂笔头


fgets

fgets用于从指定的流中读取一行文本或字符串,并将其存储到指定的字符串变量中,这个函数的原型如下:

char *fgets(char *str, int n, FILE *stream)

这里的参数解释如下:

  • str - 是指向字符数组的指针,读取的字符串将被存储在这里

  • n   - 是要读取的最大字符数(包括最终的 null 字符),通常,使用作为 str 传递的数组的长度

  • stream - 这是指向FILE对象的指针,该对象标识从中读取字符的流。

fgets函数会在以下情况下停止读取:

  • 读取了(n-1)个字符
  • 读取了换行符
  • 到达了文件的末尾

如果成功,函数会返回与参数 str 相同的指针,如果遇到文件结束且没有读取到任何字符,那么 str 的内容将保持不变,并返回一个空指针;如果发生错误,也会返回一个空指针


fclose

flcose主要用于是关闭一个打开的文件流,所有缓冲区均已刷新

int fclose(FILE *stream)

这里的参数解释如下:

  • stream - 这是指向指定要关闭的流的 FILE 对象的指针。

如果文件成功关闭,函数返回零;如果失败,则返回 EOF


fopen

fopen主要作用是打开一个文件以进行各种操作,包括读取、写入等,如果文件存在,那么fopen函数会打开该文件,否则会创建一个新文件

FILE *fopen(const char *filename, const char *mode)

这里的参数解释如下:

  • filename是一个C字符串,包含需要打开的文件的名称

  • mode是一个C字符串,包含文件访问模式

以下是有效的mode_of_operation值及其含义:

"r":搜索文件,仅打开文件以进行读取。如果文件无法打开,fopen返回NULL
"w":搜索文件,如果文件已经存在,其内容将被覆盖,如果文件不存在,则创建一个新文件。仅创建用于写入的新文件(不可读)
"a":搜索文件,如果文件成功打开,fopen将其加载到内存中,并设置一个指向其中最后一个字符的指针,如果文件不存在,则创建一个新文件,仅用于在文件末尾追加(写入)
"r+":搜索文件,打开文件以进行读取和写入,如果无法打开文件,则返回NULL
"w+":搜索文件,如果文件存在,其内容将被覆盖。如果文件不存在,则创建一个新文件,与“w”不同的是,我们也可以读取使用“w+”创建的文件
"a+":搜索文件,如果文件成功打开,fopen()将其加载到内存中,并设置一个指向其中最后一个字符的指针,如果文件不存在,则创建一个新文件,该文件用于读取和追加(在文件末尾写入)

fopen函数的返回值是一个指向FILE对象的指针。如果文件成功打开或创建,那么这个指针可以用于后续的文件操作,如读取、写入等。如果由于某种原因(例如,文件不存在,或者没有足够的内存来创建FILE对象)无法打开或创建文件,那么fopen函数将返回NULL


fwrite

fwrite主要作用是将数据从 ptr 指向的数组写入到给定的流中

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

这里的参数解释如下:

  • ptr - 这是指向要写入的元素数组的指针

  • size − 这是要写入的每个元素的大小(以字节为单位)

  • nmemb − 这是元素的数量,每个元素的大小为 bytes

  • stream - 是指向FILE对象的指针,该对象标识了数据将被写入的流

此函数返回作为 size_t 对象成功返回的元素总数,这是一种整数数据类型。如果此数字与 nmemb 参数不同,则会显示错误。


write

write主要作用是将数据从缓冲区写入到给定的文件描述符中

ssize_t write(int fd, const void *buf, size_t count)

这里的参数解释如下:

  • fd - 是文件描述符  (write所对应的是写,即就是1)
  • buf - 是指向要写入元素的缓冲区的指针   (通常是字符串)
  • count - 是要写入的字节数

如果成功,write函数将返回写入的字节数;如果出错,将返回0


fread

fread主要作用是从给定的流中读取数据,并将其存储到由ptr指向的数组中

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)

这里的参数解释如下:

  • ptr - 是指向一个内存块的指针,该内存块的最小大小为size*nmemb字节
  • size - 是每个要读取的元素的字节大小
  • nmemb - 是要读取的元素数量
  • stream - 是指向FILE对象的指针,该对象标识了输入流

函数返回成功读取的元素总数,这是一个size_t对象,它是一个整数数据类型,如果这个数字与nmemb参数不同,那么可能发生了错误,或者已经到达文件的末尾


read

read主要作用是从给定的文件描述符中读取数据,并将其存储到由buf指向的缓冲区中

ssize_t read(int fd, void *buf, size_t count)

这里的参数解释如下:

  • fd - 是文件描述符,指定要读取的文件或套接字的标识符
  • buf - 指向存储读取数据的缓冲区的指针,该指针的最小大小为count字节
  • count - 是要读取的最大字节数

如果成功,read函数将返回读取的字节数。如果出错,将返回-1,并设置errno以指示错误


总结:

了解函数的作用,可以更好的让我们在代码审计的过程理清程序的之间的逻辑,加油加油!!!

  • 28
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值