百度百科中关于fwrite的用法说明
来源:互联网 发布:linux服务器视频教程 编辑:程序博客网 时间:2024/06/05 14:45
size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
返回值:返回实际写入的数据块数目
(1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite[1] 函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
4程序示例编辑
示例一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
struct
mystruct
{
int
i;
char
cha;
};
int
main(
void
)
{
FILE
*stream;
struct
mystruct s;
if
((stream =
fopen
(
"TEST.$$$"
,
"wb"
)) == NULL)
/* open file TEST.$$$ */
{
fprintf
(stderr,
"Cannot open output file.\n"
);
return
1;
}
s.i = 0;
s.cha =
'A'
;
fwrite
(&s,
sizeof
(s), 1, stream);
/* 写的struct文件*/
fclose
(stream);
/*关闭文件*/
return
0;
}
示例二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<stdio.h>
#define SIZE 1
typedef
struct
{
char
name[10];
int
num;
int
age;
char
addr[15];
}student;
student stu[SIZE];
void
save()
{
FILE
*fp;
int
i;
if
((fp=
fopen
(
"dat.txt"
,
"w"
))==NULL)
{
printf
(
"无法打开此文件!\n"
);
return
;
}
for
(i=0;i<SIZE;i++)
if
(
fwrite
(&stu[i],
sizeof
(student), 1, fp) != 1)
printf
(
"文件写入错误。!\n"
);
fclose
(fp);
}
void
main()
{
int
i;
for
(i=0;i<SIZE;i++)
scanf
(
"%s%d%d%s"
,&stu[i].name,&stu[i].num,&stu[i].age,&stu[i].addr);
save();
}
示例三:
1
2
3
4
5
6
7
8
9
10
11
/* fwrite example : write buffer */
#include <stdio.h>
int
main ()
{
FILE
* pFile;
char
buffer[] = {
'x'
,
'y'
,
'z'
};
pFile =
fopen
(
"myfile.bin"
,
"wb"
);
fwrite
(buffer ,
sizeof
(buffer), 1 , pFile );
fclose
(pFile);
return
0;
}
称为myfile.bin的一个文件被创建并存储到它的缓冲区的内容。为了简单起见,该缓冲区包含Char元素,但它可以包含任何其他类型。.
sizeof(buffer)字节数组的长度(在这种情况下,它是三个,因为数组有三个元素,每次一个字节)。
示例四:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//程序示例 fwrite fread fseek
#include <stdio.h>
int
main ()
{
FILE
*fp;
char
msg[] =
"file content"
;
char
buf[20];
fp =
fopen
(
"d:\\a\\a.txt"
,
"w+"
);
if
(NULL == fp)
{
printf
(
"The file doesn't exist!\n"
);
return
-1;
}
fwrite
(msg,
strlen
(msg),1,fp);
//把字符串内容写入到文件
fseek
(fp,0,SEEK_SET);
//定位文件指针到文件开始位置
fread
(buf,
strlen
(msg),1,fp);
//把文件内容读入到缓存
buf[
strlen
(msg)] =
'\0'
;
//删除缓存内多余的空间
printf
(
"buf = %s\n"
,buf);
printf
(
"strlen(buf) = %d\n"
,
strlen
(buf));
return
0;
}
0 0
- 百度百科中关于fwrite的用法说明
- 百度百科中关于推荐算法的描述
- KillTimer的用法(百度百科)
- 【转载自百度百科】this的用法
- set用法--百度百科
- 关于百度百科
- 百度百科 中对BI的定义
- 百度百科中对silverlight的介绍
- 从百度百科中找到的vc
- AppIcon中pt的百度百科解释
- 关于webwork中continuation用法的说明
- fwrite函数的用法
- 关于百度的用法
- malloc函数的用法:转自百度百科
- BitBlt的百度百科
- Meta 标签介绍及部分用法说明(摘取百度百科)
- 关于#pragma +参数的使用说明y(转自百度百科)
- 关于输入框的限制问题(百度百科转载)
- 程序显示cout
- ZKT指纹识别算法
- 从零实现MVC框架之文件上传(8)
- JS对象、DOM对象、Jqeury对象、Json对象 对比分析
- 当里个当,免费的HTML5连载来了《HTML5网页开发实例详解》连载(一)
- 百度百科中关于fwrite的用法说明
- tomcat设置https双向协议
- struts2中接受参数的几种方式!!!
- 零废话VS2012 MVC3项目中javascript、C#实现图片上传
- 升级linux bash
- linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间
- HDU 2717 Catch That Cow
- How To Fix soapUI JVM Maximum Heap Size (-Xmx) Error [Solution]
- 外贸开发,用java调用速卖通api第一步,token的获取。