百度
360搜索
搜狗搜索

c语言fwrite,C语言,fwrite中的参数都是什么意思详细介绍

本文目录一览: c语言 fwrite函数 是插入还是覆盖

要看写指针当前的位置,如果说写指针在文件头就会覆盖。
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
Parameters
buffer
Pointer to data to be written.
size
Item size in bytes.
count
Maximum number of items to be written.
stream
Pointer to FILE structure.
从上述定义可以看出:
fseek(fp,2*sizeof(struct book),SEEK_SET);//指针指向第二个结构体后;
fwrite(&Book,sizeof(struct book),1,fp);//写入仅仅一个结构体;
所以,操作后,有三个结构体
覆盖,他还是5个
fwrite函数是覆盖而不是插入。
只要打开文件时知名支持写操作,那么使用fwrite函数时均是覆盖模式,而不会插入。
即在当前位置写入数据,后续数据并不会依次后移,而是直接覆盖。
比如,如果文件中有数据123456789,在3的位置写入字符abc,那么结果为
12abc6789。
如果要实现插入效果,可以将后续数据读到内存,然后写入要写的数据,再写入原本读出的数据。

fwrite()函数和fread()函数分别有几个返回值?分别代表什么意思?(C语言)

分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:

fwrite(将数据写至文件流)
相关函数 fopen,fread,fseek,fscanf
表头文件 #include

定义函数 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明 fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。

返回值 返回实际写入的nmemb数目。

范例 #include

#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}

#define nmemb 3

struct test

{

char name[20];

int size;

}s[nmemb];

main()

{

FILE * stream;

set_s(0,”Linux!”);

set_s(1,”FreeBSD!”);

set_s(2,”Windows2000.”);

stream=fopen(“/tmp/fwrite”,”w”);

fwrite(s,sizeof(struct test),nmemb,stream);

fclose(stream);

}

执行 参考fread()。

fread(从文件流读取数据)

相关函数 fopen,fwrite,fseek,fscanf

表头文件 #include

定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明 fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。

返回值 返回实际读取到的nmemb数目。

附加说明

范例 #include

#define nmemb 3

struct test

{

char name[20];

int size;

}s[nmemb];

main()

{

FILE * stream;

int i;

stream = fopen(“/tmp/fwrite”,”r”);

fread(s,sizeof(struct test),nmemb,stream);

fclose(stream);

for(i=0;i
<nmemb;i++)
printf(“name[%d]=%-20s:size[%d]=%d\n”,i,s[i].name,i,s[i].size);

}

执行 name[0]=Linux! size[0]=6

name[1]=FreeBSD! size[1]=8

name[2]=Windows2000 size[2]=11
</nmemb;i++)

C语言,fwrite中的参数都是什么意思

第一个参数是缓冲区首地址
第二个参数是缓冲区元素大小
第三个参数是元素个数
第四个参数是指向写文件的指针
fwrite(
s2,
待写入文件的数据的内存首地址
7,
写入的数据块个数
n
1,
一个数据块的大小
s
pf
待写入的文件指针
)
总共写入文件的数据字节数为n*s个
fwrite(a,sizeof(int),5,fp);
第一个参数:数据存放在a中。
第二个参数:sizeof(int)每次写入一个整数大小
第三个参数:写入5次(即写入5个int大小)
第四个参数:文件句柄。
所以文件中只写了5个整数进去。
读取的时候,同样也读取了5个整数。但是a数组(5个整数)中,均被修改过。

C语言fwrite怎么写入文件?

C语言fwrite写入文件可以参考以下的代码:
// 定义一个学生结构体
struct Student_type
{
char name[10];
int num;
int age;
char addr[30];
}stud[40];
int i;
FILE *fp; // 定义一个文件指针fp
fp = fopen("stu.dat", "wb"); // 以二进制可写方式打开stu.dat文件
// 将40个学生的记录写入文件stu.dat中
for(i=0; i<40; i++)
fwrite(&stud[i], sizeof(struct Student_type), 1, fp);
扩展资料:
fwrite函数用法
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函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。
参考资料来源:百度百科-fwrite

阅读更多 >>>  用php写一个登录与注册,php如何实现注册

C语言,fwrite中的参数都是什么意思

fwrite(a,sizeof(int),5,fp);
第一个参数:数据存放在a中。
第二个参数:sizeof(int)每次写入一个整数大小
第三个参数:写入5次(即写入5个int大小)
第四个参数:文件句柄。
所以文件中只写了5个整数进去。
读取的时候,同样也读取了5个整数。但是a数组(5个整数)中,均被修改过。
第一个参数是缓冲区首地址
第二个参数是缓冲区元素大小
第三个参数是元素个数
第四个参数是指向写文件的指针
这个取决于fopen打开文件时传入的参数如果以追加方式打开,就是写到后面,如果以写方式打开,就是覆盖写,如果把文件指针移动到末尾再写就是写后面
打印数组a,每个元素大小为int型,共打印5个,打印到fp
fwrite(a, sizeof(int), 5, fp);
a表示待写入数据的起始地址
sizeof(int)表示每次写入的数据长度 (sizeof(int)=4字节)
5表示一共写入5次 。和前两个参数结合起来用,就是从a的位置上获得5次数据写入文件中,每次获得4字节长度。(本题中,就是指a数组的前5个元素)
fp表示文件句柄(前面用fopen打开的文件)

C语言 fwrite()和fprintf()的区别

fwrite是按二进制写数据到文件,而fprintf是严格按照参数里边的格式控制符,写数据到文件。可以是十进制,二进制,字符串,等等,而且可以直接打开文件查看数据,二进制文件是不能直接打开文件查看数据的。
fwrite是向流中写入数据,而fprintf是向流中写入格式数据。两者的共同点为向流中写入数据,至于区别可以看看两者的申明:
size_tfwrite(
constvoid*buffer,
size_tsize,
size_tcount,
file*stream
);
intfprintf(
file*stream,
constchar*format[,
argument]...
);
前者fwrite写入流stream中的数据是buffer指定的内容,内容的字节大小分别由size和count两个参数来指定,因此写入流stream中的内容有可能是乱码,但是有效的数据。
后者fprintf写入流stream中的数据则由argument来指定,并且这些argument的内容分别由format指定的格式来显示,因此写入stream的内容通常来说是文本字符流,当然,也允许写入格式乱码。
两者都可以将文本写入流stream中。比如:
fwrite("helloworld!",1,12,fp);

fprintf(fp,"%s","helloworld!");
等价。

C语言 fwrite()和fprintf()的区别

一、作用区别:
fwrite是C语言函数,指向文件写入一个数据块。
fprintf是C/C++中的一个格式化写—库函数;其作用是格式化输出到一个流/文件中;
二、函数原型区别:
fwrite:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);
fprintf:int fprintf (FILE* stream, const char*format, [argument]);
三、返回值区别:
fwrite:返回实际写入的数据项个数。
fprintf:返回值是输出的字符数,发生错误时返回一个负值。
fprintf(fp, "%d", buffer); 是将格式化的数据写入文件
fprintf(文件指针,格式字符串,输出表列);
fwrite(&buffer, sizeof(int), 1, fp);是以二进位方式写入文件
fwrite(数据,数据类型大小(字节数),写入数据的最大数量,文件指针);
http://blog.csdn.net/godenlove007/article/details/7721647
fwrite是按二进制写数据到文件,而fprintf是严格按照参数里边的格式控制符,写数据到文件。可以是十进制,二进制,字符串,等等,而且可以直接打开文件查看数据,二进制文件是不能直接打开文件查看数据的。

(fwrite(&stud[i],sizeof(struct student),1,fp)!=1在C语言中是什么意思

size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );将缓冲区*buffer中的内容写到流*stream中,每块的大小为size,块数为count,返回值为实际写出块数。
就是如果没成功写入一个数据块 ,外面是不是还有个if什么的
fwite返回值为成功写入的数据块的数量
fwrite(&stud[i],sizeof(struct
student_type),1,fp)的意思是
将&stud[i]这个指针所指向的内容输出到fp这个文件中,每次输出的数据单元占sizeof(struct
student_type)个字节,总共输出1次
如果输出正确,应该是返回1的,因为fwrite返回值是返回正确输出了几个数据单元
if(fwrite(&stud[i],sizeof(struct
student_type),1,fp)!=1)的意思就是“如果没有将内容正确的写入fp中”

C语言中fwrite函数输入时会覆盖文件以前的数据吗?

fwrite写入时覆盖不覆盖原来文件是用参数决定的
fwrite原型:
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。
是否覆盖决定于stream
FILE *stream=fopen("文件名","mod");其中mod如下:
(1)r 以只读方式打开文件,该文件必须存在。
(2)r+ 以可读写方式打开文件,该文件必须存在。
(3)rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
(4)w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
(5)w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
(6)a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
(7)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
(8)wb 只写打开或新建一个二进制文件;只允许写数据。
(9)wb+ 读写打开或建立一个二进制文件,允许读和写。
(10)ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

c语言 fwrite的四个参数分别是什么

我以结构体为例:
typedef struct node{
char name[10];
int age;
...
}Person;
定义一个:Person *person;
File *fp=fopen("a+","filename");
fwrite(person, sizeof(Person), 1, fp);
说明:数字1表示:一共写进去几个sizeof(type),fp是指向存储文件的指针;“a+”表示以追加的方式(还有只读--r;覆盖写--w等)
fwrite(buffer,size,count,fp);
举个例:
fwrite(&id,1,10,f)就是把id里面的值写到f里面,每次写1个字节,一共写10次或是fread(&id,10,1,f)就是把id里面的值读到里面,每次读10个字节,一共读1次。
参数分别是指针,整型,整型,指针

网站数据信息

"c语言fwrite,C语言,fwrite中的参数都是什么意思"浏览人数已经达到16次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:c语言fwrite,C语言,fwrite中的参数都是什么意思的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!