欢迎大家来到IT世界,在知识的湖畔探索吧!
标准I/O库
有过C编程经历的人都会知道stdio头文件,它就是C语言的标准IO库,在标准IO库中,与底层文件描述符相对应的是流,它被实现为指向结构FILE的指针。IO库的函数有很多,为了与前面的内容对应,这里还是只讲与前面四个函数相对应的函数,其他的函数,你可以查一查手册页。
A、fopen库函数
fopen库函数的原型为:
FILE* fopen(const char *filename, const char *mode);
它与底层系统调用open类似,成功时返回一个非空指针。失败时返回NULL。
B、fread库函数
fread库函数的原型为:
size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
它与底层调用read相似,其作用是从stream读取nitems个长度为size的数据到ptr所指向的缓冲区中。返回值是成功读到缓冲区中的记录个数。
注:stream为用fopen函数返回的文件结构指针。
C、fwrite库函数
fwrite库函数的原型:
size_t fwrite(const void *ptr, size_t size, size_t nitems, FILE *stream);
它与底层调用write相似,其作用是从ptr指向的缓冲区中读取nitems个长度为size到数据,并把它们写到stream所对应的文件中。
D、fclose库函数
fclose库函数的原型为:
int fclose(FILE *stream);
它与系统调用close相似,其作用是关闭指定的文件流stream。
例子
同样地,下面是前一个例子的另一个实现版本,它实现的功能与先前的例子一样,不过使用的是标准I/O库,而不是系统调用,文件名为copy_stdio.c代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int c = 0;
FILE *pfin = NULL;
FILE *pfout = NULL;
// 以只读方式打开数据文件
pfin = fopen(“Data.txt”, “r”);
// 以只写方式打开复制的新文件
pfout = fopen(“copy_stdio.out.txt”, “w”);
// 读数据
while (fread(&c, sizeof(char), 1, pfin))
{
//写数据
fwrite(&c, sizeof(char), 1, pfout);
}
// 关闭文件流
fclose(pfin);
fclose(pfout);
return 0;
}
当然这里你也可以用其他的库函数来完成工作,如:用fgetc代替fread,用fputc代替fwrite等。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/70554.html