添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • 第一个参数void* data表示目标内存地址,如果是读则从文件中将内容读入到此内存地址中,如果是写则将此内存地址中的内容写入文件。
  • 第二个参数size_t size表示读写文件时单个数据块的字节数。
  • 第三个参数size_t count表示读写文件的数据快的总个数。
  • 第四个参数FILE* stream表示文件描述符,就是在上一节中我们使用fopen打开文件之后的返回值。
  • 返回值size_t表示读或写的结果数据块个数。
  • 在这里我们来看看关于第二个参数和第三个参数的作用。例如我们希望从文件中读取10个int型变量可以这样书写代码:

    FILE *fp = fopen("/data/temp/stu", "w"); size_t cnt = fwrite(stu, sizeof(struct student), 3, fp); printf("write cnt = %d.\n", cnt); fclose(fp); fp = fopen("/data/temp/stu", "r"); cnt = fread(stu, sizeof(struct student), 3, fp); printf("read cnt = %d.\n", cnt); fclose(fp); return 0;

    这样我们就把在程序中以结构体方式存在的变量保存到了文件中,并再用结构体的方式将文件内容读取到内存变量中。 注意我们在上面介绍的内容都是将内存中的变量直接保存到文件中去,没有做任何的字符转换,所以文件中的内容与内存中的变量内容一致,都是二进制文件,而不是字符型文件(文本文件)。

    接下来我们来编程一个存储文本文件的例子:

    for (int i = 0; i < 3; i++) int len = snprintf(buff, 100, "%d, %d, %s\n", stu[i].id, stu[i].age, stu[i].name); fwrite(buff, 1, len, fp); fclose(fp); return 0;