PWN PWN PWN !!! 技巧 (5)
简介:
紧接上续四部,这次准备记录一下常见的函数的功能(容易忘记,记录一手),好记性不如烂笔头。
fgets
fgets 用于从指定的流中读取一行文本或字符串,并将其存储到指定的字符串变量中:
char *fgets(char *str, int n, FILE *stream); |
参数说明:
str:指向字符数组的指针,读取的字符串将存储在这里。n:要读取的最大字符数(包括最终的 null 字符)。stream:指向 FILE 对象的指针,该对象标识从中读取字符的流。
停止读取的条件:
- 读取了
n-1个字符; - 读取了换行符;
- 到达文件末尾。
返回值:
- 成功:返回
str; - 失败或 EOF:返回
NULL,str不变。
fclose
fclose 主要用于关闭一个打开的文件流,同时刷新所有缓冲区。
int fclose(FILE *stream); |
参数说明:
stream:指向要关闭的文件流对象。
返回值:
- 成功:返回
0; - 失败:返回
EOF。
fopen
fopen 主要作用是打开一个文件以进行各种操作(读、写、追加等)。
FILE *fopen(const char *filename, const char *mode); |
参数说明:
filename:要打开的文件名。mode:文件访问模式:
| 模式 | 含义 |
|---|---|
"r" |
以只读方式打开文件,文件不存在则返回 NULL。 |
"w" |
以写方式打开文件,文件存在则清空,不存在则创建新文件。 |
"a" |
以追加方式写入文件末尾,不存在则创建。 |
"r+" |
打开可读可写文件,文件不存在返回 NULL。 |
"w+" |
可读写,新建或清空文件内容。 |
"a+" |
可读可写,追加到文件末尾,不存在则新建。 |
返回值:
- 成功:返回
FILE*指针; - 失败:返回
NULL。
fwrite
fwrite 将数据从 ptr 指向的数组写入到给定流中。
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); |
参数说明:
ptr:指向要写入的内存区域;size:单个元素的大小(字节);nmemb:写入的元素数量;stream:目标文件流指针。
返回值:
- 实际写入的元素数量,类型为
size_t; - 若不等于
nmemb,说明出错或写入不完整。
write
write 将数据从缓冲区写入文件描述符(低层系统调用)。
ssize_t write(int fd, const void *buf, size_t count); |
参数说明:
fd:文件描述符(1表示标准输出);buf:要写入的数据缓冲区;count:要写入的字节数。
返回值:
- 成功:返回写入的字节数;
- 失败:返回
0。
fread
fread 从指定文件流中读取数据,存储到给定缓冲区中。
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); |
参数说明:
ptr:指向接收数据的内存;size:每个元素的大小(字节);nmemb:读取的元素数量;stream:输入流指针。
返回值:
- 实际读取的元素数量(
size_t); - 若少于
nmemb,可能是 EOF 或出错。
read
read 是一个低层函数,从文件描述符读取数据到内存缓冲区。
ssize_t read(int fd, void *buf, size_t count); |
参数说明:
fd:文件描述符(例如,0表示标准输入);buf:缓冲区;count:要读取的最大字节数。
返回值:
- 成功:读取的字节数;
- 失败:返回
-1,并设置errno。
总结:
了解函数的作用,可以更好地让我们在代码审计的过程中理清程序之间的逻辑,加油加油!!!