C 标准库函数
简介
stdio.h 头文件定义了三个变量类型,一些宏和各种函数来执行输入输出。
库变量
| 变量 | 描述 |
|---|---|
| size_t | 这是无符号整型,它是 sizeof 关键字的结果 |
| FILE | 这是一个适合存储文件流信息的对象类型 |
| fops_t | 这是一个适合存储文件中任何位置的对象类型 |
fopen 函数
描述
C 库函数 FILE *fopen(const char *filename, const char *mode) 使用给定的模式 mode 打开 filename 所指向的文件。
声明
FILE *fopen(const char *filename, const char *mode)
参数:
- filename 这是
C字符串,包含了要打开的文件名称。 - mode 这是
C字符串,包含了文件的访问模式
模式如下:
| 模式 | 描述 |
|---|---|
| “r” | 打开一个用于读取的文件。该文件必须存在 |
| “w” | 创建一个用于写入的空文件。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件 |
| “a” | 追加到一个文件。写操作向文件末尾追加数据。如果文件不存在,则创建文件 |
| “r+” | 打开一个用于更新的文件,可读取也可写入。该文件必须存在 |
| “w+” | 创建一个用于读写的空文件 |
| “a+” | 打开一个用于读取和追加的文件 |
返回值:
- 该函数返回一个
FILE指针。否则返回NULL,且设置全局变量errno来标识错误。
fclose 函数
描述
C 库函数 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。
声明
int flose(FILE *stream)
参数:
- strean 这是指向
FILE对象的指针,该FILE对象指定了要被关闭的流。
返回值:
- 如果流关闭成功,则该方法返回零,如果失败,则返回
EOF。
fwrite 函数
描述
C 库函数 size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) 把 ptr 所指向的数组中的数据写入到给定流 stream 中。
函数声明
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
参数:
- ptr 这是指向要被写入的元素数组的指针
- 这是要被写入的每个元素的大小,以字节为单位
- 这是元素的个数,每个元素的大小为
size字节 - 这是指向
FILE对象的指针,该FILE对象指定了一个输出流
返回值:
- 如果成功,该函数返回一个
size_t对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与nmemb参数不同,则会显示一个错误。
fread 函数
C 库函数 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) 从给定流 stream 读取数据到 ptr 所指向的数组中。
声明
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
参数:
- ptr 这是指向带有最小尺寸
size * nmemb字节的内存块指针 - size 这是要读取的每个元素的大小,以字节为单位
- nmemb 这是元素的个数,每个元素的大小为
size字节 - stream 这是指向
FILE对象的指针,该FILE对象指定了一个输入流
返回值:
- 成功读取的元素总数会以
size_t对象返回,size_t对象是一个整型数据类型。如果总数与nmemb参数不同,则可能发生了一个错误或者到达了文件末尾。
fseek 函数
简介
C 库函数 int fseek(FILE *stream, long int offset, int whence) 设置流 stream 的文件位置为给定的偏移 offset,参数 offset 意味着从给定的 whence 位置查找的字节数。
声明
int fseek(FILE *stream, long int offset, int whence)
参数:
- stream 这是指向
FILE对象的指针,该FILE对象标识了流 - offset 这是相对
whence的偏移量,以字节为单位 - whence 这是表示开始添加偏移
offset的位置,它一般指定为下列常量之一:
| 常量 | 描述 |
|---|---|
| SEEK_SET | 文件的开头 |
| SEEK_CUR | 文件指针的当前位置 |
| SEEK_END | 文件的末尾 |
返回值:
- 如果成功,则该函数返回零,否则返回非零值
remove 函数
简介
C 库函数 int remove(const char *filename) 删除给定的文件名 filename,以便它不再被访问。
声明
int remove(const char *filename)
参数:
- filename 这是
C字符串,包含了要被删除的文件名称
返回值:
- 如果成功,则返回零,如果错误,则返回
-1,并设置errno
frename 函数
描述
C 库函数 int rename(const char *old_filename, const char *new_filename) 把 old_filename 所指向的文件名改为 new_filename。
声明
int rename(const char *old_filename, const char *new_filename)
参数:
- old_filename 这是
C字符串,包含了要被重命名/移动的文件名称。 - new_filename 这是
C字符串,包含了文件的新名称。
返回值:
- 如果成功,则返回零,如果错误,则返回
-1并设置errno。
测试代码
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *fp = NULL;
char str[] = "hello tyustli";
fp = fopen("file.txt", "w");
if (fp == NULL)
{
printf("open file failed\n");
}
int size = 0;
size = fwrite(str, sizeof(str), 1, fp);
if (size != 1)
{
printf("write file failed\n");
}
fclose(fp);
fp = fopen("file.txt", "r");
if (fp == NULL)
{
printf("open file failed\n");
}
char read_buf[sizeof(str)];
size = fread(read_buf, sizeof(str), 1, fp);
if (size != 1)
{
printf("read file failed\n");
}
if (strncmp(read_buf, str, sizeof(str)) != 0)
{
printf("file opration failed\n");
}
printf("file operation successful\n");
return 0;
}
/*
编译:gcc -o out test.c
运行:./out
结果:
file operation successful
*/
231

被折叠的 条评论
为什么被折叠?



