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

Python018

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

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

解析:

fwrite(将数据写至文件流)

相关函数 fopen,fread,fseek,fscanf

表头文件 #include<stdio.h>

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

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

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

范例 #include<stdio.h>

#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<stdio.h>

定义函数 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<stdio.h>

#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=0i<nmembi++)

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

c语言中fread函数语法为size_t fread( void *restrict buffer, size_t size, size_t count, FILE *restrict stream )。buffer是指向要读取的数组中首个对象的指针,size是每个对象的大小(单位是字节),count是要读取的对象个数,stream是输入流。通过fread函数可进行数据读取,返回成功读取的对象个数。

扩展资料:

fread函数从给定输入流stream读取最多count个对象到数组buffer中(相当于以对每个对象调用size次fgetc),把buffer当作unsignedchar数组并顺序保存结果。流的文件位置指示器前进读取的字节数。

若出现错误,则流的文件位置指示器的位置不确定。若没有完整地读入最后一个元素,则其值不确定,可能小于count。若size或count为零,则fread返回零且不进行其他动作。fread不区分文件尾和错误,因此调用者必须用feof和ferror才能判断发生了什么。