C语言fwrite怎么写入文件?

Python012

C语言fwrite怎么写入文件?,第1张

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

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

解析:

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