c++ 读写二进制文件
教学内容:
l 打开二进制文件
l 写二进制文件
l 读二进制文件
一、打开二进制文件
FILE *fopen( const char *filename, const char *mode );
filename是要操作的文件名。
mode |
说明 |
"wb" |
打开一个二进制文件,进行写入操作。如果文件不存在,则会建立一个新文件. 存在则清空内容。 |
"ab" |
打开一个二进制文件,进行追加操作。如果文件不存在,则会建立一个新文件. 存在则追加内容。 |
"rb" |
打开一个二进制文件,进行读取操作。 |
二、写二进制文件
size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );
//count*size 是要写入文件的字节数
buffer是缓冲区指针
stream是文件指针(或者流指针)
三、读二进制文件
size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
//count*size 是要读取的字节数
buffer是缓冲区指针
stream是文件指针(或者流指针)
int main(void) { //未重定向的代码 char num[256]; FILE *f; stu_data stu10[10]={0}; int i; time_t t1; struct tm * tm1; f=fopen("test.txt","rb"); //fprintf(f,"ddddd"); if (f==NULL) //if (!f) { //fprintf(stderr,"文件打开出错或者是文件不存在 \n");//stdout perror("test.txt"); } ////获取数据并写入文件 //for (i=0;i<10;i++) //{ // scanf("%s",&stu10[i].name ); // time(&t1); // tm1=localtime(&t1); // //记录签到时间//记录学生 姓名和签到时间 // stu10[i].stuTime.hour=tm1->tm_hour; // stu10[i].stuTime.min=tm1->tm_min; // stu10[i].stuTime.sec=tm1->tm_sec; //} ////写入到二进制文件里 //fwrite(stu10,sizeof(stu_data),10,f); //读取二进制文件数据至stu10缓冲区 fread(stu10,sizeof(stu_data),10,f); //显示数据 for (i=0;i<10;i++) { printf("name=%s ",stu10[i].name); printf("时间:%d-%d-%d \n",stu10[i].stuTime.hour,stu10[i].stuTime.min,stu10[i].stuTime.sec); } fclose(f); getchar(); getchar(); return 0; }