头文件:#include <stdio.h>
函数原型:size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream);
参数:
buffer:是一个指针,对fwrite来说,是获取数据的地址;
size:要写入内容的每个数据项的字节数,单位是字节;
count:要写入count个数据项,每个数据项size个字节;
stream:目标文件指针。
返回值:
返回实际写入的数据项个数count。
说明:
该函数把流写入到文件的哪里?这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
fseek对此函数有作用,但是fwrite函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步,可以要fflush(FILE *fp)函数同步。
程序实例:
//程序示例 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;
}