码迷,mamicode.com
首页 > 其他好文 > 详细

UNIX编程:--标准I/O库之(fread()、write())

时间:2020-06-27 10:06:05      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:close   eof   etc   通过   str   min   ons   必须   gets   

 

一、前言
在前面文章内容中小编介绍的函数以1次一个字符或1次一行的方式进行操作。假如进行二进制I/O操作,那么小编更愿意1次读活蟹1个完整的结构。假如采用getc()或putc()读、写一个结构,那么必须循环通过整个结构,每一次循环处理一个字节,1次读或写一个字节,这会非常的麻烦。假如采用fputs()或fgets(),那么由于fputs()在遇到null字节时就停止,而在结构中可能含有null字节,因此 不能采用它实现读结构的要求;类似的,fgets()遇到null也会停止工作
因此提供了下边2个函数以二进制I/O操作
二、fread()、fwrite()

fread()

size_t fread(void *buffer, size_t size, size_t count, FILE *stream);

功能:从stream流中读取count次数据,每次读取size个字节大小。然后写入到buffer中

返回值:
读取成功:返回实际读取stream流的次数,而不是字节数
读取失败/达到文件尾:返回0
若stream或buffer为空指针,或在unicode模式中写入的字节数为奇数,此函数设置errno为EINVAL以及返回0

fwrite()

size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

功能:从buffer中读取count次,每次读取size个字节,然后写入到stream流中

返回值:
读取成功:返回实际写入stream流的次数,而不是字节数


//将一个结构体信息写入到文件中,然后再文件中读出来
#include<stdio.h>
#include<string.h>
typedef struct student
{
int age;
char name[20];
}stu;
int main()
{
stu Man={17,"xiaoming"};
stu Man2;
FILE *pf;
if(pf=fopen("Demo.txt","w+"))
{
fwrite(&Man,sizeof(stu),1,pf);
}
fclose(pf);
if(pf=fopen("Demo.txt","r"))
{
fread(&Man2,sizeof(stu),1,pf);
printf("Age:%d,Name:%s\n",Man2.age,Man2.name);
fclose(pf);
}
return 0;
}

 

UNIX编程:--标准I/O库之(fread()、write())

标签:close   eof   etc   通过   str   min   ons   必须   gets   

原文地址:https://www.cnblogs.com/youdud/p/13197010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!