百度百科中关于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;
}

目录
相关文章
|
8月前
|
Linux Perl
百度搜索:蓝易云【Linux常用命令awk】
以上仅是awk命令的一些常见用法,它还有许多更复杂的功能和用法,可以根据需要灵活运用。awk在文本处理和数据分析中非常实用,是Linux系统中的一把利器。
63 2
|
存储 安全 Ubuntu
百度搜索:蓝易云【T-Pot安装教程。】
请注意,T-Pot是一个强大的工具,需要谨慎使用。确保你遵守适用的法律法规,并且仅在合法的环境中使用T-Pot进行安全测试和研究。
319 0
|
2月前
|
API 数据安全/隐私保护
抖音视频,图集无水印直链解析免费API接口教程
该接口用于解析抖音视频和图集的无水印直链地址。请求地址为 `https://cn.apihz.cn/api/fun/douyin.php`,支持POST或GET请求。请求参数包括用户ID、用户KEY和视频或图集地址。返回参数包括状态码、信息提示、作者昵称、标题、视频地址、封面、图集和类型。示例请求和返回数据详见文档。
|
8月前
|
Perl
百度搜索:蓝易云【服务器日志处理,文件截取关键字教程】
通过按照上述步骤处理服务器日志并截取关键字,您可以有效地过滤和提取感兴趣的日志信息。请根据实际情况选择合适的工具和命令,以满足您的需求。
64 0
|
8月前
|
存储 Shell
百度搜索:蓝易云【Shell变量知多少?】
Shell变量在Shell脚本编程中起到了关键作用,可以用于存储临时数据、传递参数和控制程序的执行流程。熟练掌握Shell变量的使用可以帮助编写更灵活、功能强大的Shell脚本。
73 0
|
Windows
百度搜索:蓝易云【cmd命令常用速记】
这些是常见的Windows命令行命令,掌握它们可以帮助您更高效地管理和操作计算机系统。请注意,使用命令行命令时请谨慎,确保了解其功能和参数,以免对系统造成意外影响。
55 0
|
NoSQL Linux C++
百度搜索:蓝易云【Linux常用gdb命令详解。】
使用gdb调试程序时,可以通过设置断点、执行程序、观察变量值等操作来逐步调试代码,定位问题并进行修复。熟练掌握gdb的使用可以提高程序调试的效率和准确性。
54 0
Typecho-handsome主题如何统计全站字数
在使用handsome主题的过程中,每篇文章都会自动进行字数的统计,但是如何才能统计出我们首页从开始到至今写的所有文章的字数之和呢?今天的教程告诉大家如何在Typecho-handsome主题中统计全站字数!
193 1
Typecho-handsome主题如何统计全站字数
小马识途简析创建百科词条的流程和注意事项
小马识途简析创建百科词条的流程和注意事项
158 0
|
存储 网络协议 Linux
这一次!我在百度告诉你,当你请求百度时都发生了什么...(一)
这一次!我在百度告诉你,当你请求百度时都发生了什么...(一)
219 0
这一次!我在百度告诉你,当你请求百度时都发生了什么...(一)

热门文章

最新文章