바이너리 파일fread, fwrite 함수에 대한 읽기와 쓰기 분류: C 언어 학습...

2216 단어
환경: vs 2013
언어: C 언어
시간: 2015년 3월 10일
기능: 바이너리 파일의 읽기와 쓰기 실례를 실현
#define _CRT_SECURE_NO_WARNINGS
#include 
#include 
#define FILENAME "d:/studentInfo"
#define COUNT 5
typedef struct
{
	char name[10];
	short Math;
	short Chinese;
	short WenZong;
}Student;

//        
int ReadInfo();
//          
int WriteInfo(Student  *stu,int count);
//       
int InitInfo(Student *stu,int count);
int main(void)
{
	int resWrite = 0,resRead=0;
	Student stu[COUNT];
	InitInfo(stu, COUNT);
	resWrite = WriteInfo(stu, COUNT);
	if (0 == resWrite)
		printf("    
"); else printf("
"); ReadInfo(); system("pause"); return 0; } // int InitInfo(Student *stu, int count) { int res = 0; if (NULL == stu || count < 0) { res = -1; return res; } for (size_t i = 0; i < count; i++) { sprintf((stu+i)->name,"LSX%d",i); (stu + i)->Math = i * 5 + 100; (stu + i)->Chinese = i * 5 + 80; (stu + i)->WenZong = i * 5 + 200; } return res; } // int ReadInfo() { int res = 0,res2=0; FILE*fp = NULL; Student stu[1]; fp = fopen(FILENAME,"rb"); // , , if (NULL == fp) { res = -1; return res; } while (!feof(fp)) { res2= fread(stu,sizeof(Student),1,fp); //fread , , if (1 == res2) { printf("%s %10d %10d %10d",stu->name,stu->Math,stu->Chinese,stu->WenZong); } printf("
"); } if (NULL != fp) fclose(fp); return res; } // int WriteInfo(Student * stu,int count) { int res = 0,res2=0; FILE*fp = NULL; if (NULL == stu || count<0) { res = -1; return res; } fp = fopen("d:/studentInfo", "wb"); // , if (NULL == fp) { res = -1; return res; } for (size_t i = 0; i < count; i++) { res2 = fwrite(stu + i, sizeof(Student), 1, fp);// fwrite , , if (1 != res2) { res = -1; return res; } } if (NULL != fp) // fclose(fp); return res; }

판권 성명: 본고는 블로거의 오리지널 문장으로 블로거의 허락 없이 전재할 수 없습니다.
전재 대상:https://www.cnblogs.com/L-Lune/p/4671284.html

좋은 웹페이지 즐겨찾기