c--文件读写--二进制
fwrite() 写二进制文件
格式:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
#include<stdio.h> int main () { FILE *fp; char str[] = "This is runoob.com"; fp = fopen( "ss.txt" , "w" ); int n=fwrite(str, sizeof(str) , 1, fp );//写文件 //参数1 ptr:要被写入的数组的指针 //参数2:每个元素的大小,以字节为单位 //参数3:整个数组str中 包含多少个元素 //参数4:文件指针 //返回值:成功写入的块数,而不是字节数;写入正确返回值=参数3;如果遇到 EOF(“written==EOF”),就返回 0 fclose(fp); printf("%d\n",n); return(0); }
#include<stdio.h> #include<string.h> typedef struct student{ char name[20]; int age; int cenji; }Student; int main () { Student stu[5]; strcpy(stu[0].name,"liming"); stu[0].age=18; stu[0].cenji=58; strcpy(stu[1].name,"李明"); stu[1].age=19; stu[1].cenji=68; strcpy(stu[2].name,"zansan"); stu[2].age=20; stu[2].cenji=78; strcpy(stu[3].name,"lishi"); stu[3].age=21; stu[3].cenji=88; strcpy(stu[4].name,"李四"); stu[4].age=22; stu[4].cenji=98; FILE *fp = fopen( "ss.txt" , "w" ); int n=fwrite(stu, sizeof(stu[0]) , 5, fp );//写文件 //参数1:是整个数组的指针 //参数2:是每个结构体的字节数 //参数3:整个数组中包含5个结构体 fclose(fp); printf("%d\n",n); return(0); }
fread() 读二进制文件
格式:size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream)
#include<stdio.h> #include<string.h> typedef struct student{ char name[20]; int age; int cenji; }Student; int main () { Student stu[5]; FILE *fp = fopen( "ss.txt" , "r" ); int n=fread(stu, sizeof(stu[0]) , 5, fp );//读文件 //参数1:是整个数组的指针 //参数2:是每个结构体的字节数 //参数3:整个数组中包含5个结构体 //参数4:文件指针 //返回值:读取的块数 fclose(fp); printf("%s\n",stu[0].name); printf("%s\n",stu[1].name); printf("%s\n",stu[4].name); return(0); }