百度百科中关于fwrite的用法说明

简介: size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); 注意:这个函数以二进制形式对文件进行操作,不局限于文本文件 返回值:返回实际写入的数据块数目 (1)buffer:是一个指针,对fwrite来说,是要获取数据的地址; (2)size:要写入内容的单字节数; (3)count:要进
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;
}

目录
相关文章
|
7月前
|
网络协议 Linux
百度搜索:蓝易云【网络命令ifconfig用法详解。】
ifconfig命令提供了网络接口的各种信息,如IP地址、子网掩码、广播地址和硬件地址等。通过熟悉和使用ifconfig命令,您可以管理和调整网络接口的配置。请注意,ifconfig在一些Linux发行版中已经被ip命令所取代,但它仍然是许多系统上常用的命令之一。
231 0
|
4月前
百度搜索:蓝易云【uniapp中uni-popup的用法】
通过按照以上步骤,你可以在UniApp中使用uni-popup组件来实现弹出层的功能。请根据你的具体需求,使用uni-popup提供的属性和方法来定制和控制弹出层的样式和行为。更详细的用法和配置可以参考UniApp官方文档中uni-popup的相关部分。
60 0
|
4月前
|
SQL 关系型数据库 MySQL
百度搜索:蓝易云【数据库:mysqldump用法详解】
通过这些选项和示例,你可以根据自己的需求使用 `mysqldump`命令来备份和导出MySQL数据库。请注意,确保在执行 `mysqldump`命令时提供正确的用户名、密码和数据库信息,以及指定合适的输出文件路径。
38 0
|
4月前
|
关系型数据库 MySQL 数据库
百度搜索:蓝易云【数据库:mysqldump用法详解】
通过 `mysqldump` 命令,你可以轻松地备份和还原 MySQL 数据库,以便在需要时恢复数据或迁移数据库。记得根据实际需求使用正确的选项和参数。
34 2
|
6月前
|
Unix
百度搜索:蓝易云【echo命令在Unix中的作用以及其常见用法?】
这些只是"echo"命令的一些常见用法示例。它还有其他选项和用法,你可以通过阅读相关的文档或手册了解更多详细信息。
61 0
|
8月前
|
测试技术 网络架构
百度搜索:蓝易云【ping命令的所有用法及参数。】
Ping命令是计算机网络中最基本的网络测试工具之一,它可以测试本机与其他主机之间是否可以通信,还可以计算往返时间(RTT),发现数据包传输的延迟、丢失和网络抖动等信息。以下是Ping命令的详细用法和参数解释。
87 0
百度百科创建个人词条的流程是怎样的?
百度百科创建个人词条的流程是怎样的?
162 0
|
搜索推荐
百度百科创建人物词条多少钱?百科创建的费用解析
百度百科创建人物词条多少钱?百科创建的费用解析
165 0
|
Python
百度搜索的高级用法
百度搜索的高级用法
2134 0
百度搜索的高级用法
百度之星之F:百科蝌蚪团
百度百科有一支神奇的队伍,他们叫自己“百科蝌蚪团”。为了更好的让蝌蚪团的成员们安排工作,百度百科的运营团队定出了一个24小时制的时间表。
290 0