#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
typedef struct student {
int id;
char name[12];
double points;
} STUD;
STUD * read_students_binary(char *filename) { // 만들어야 함
FILE *fp;
int i = 0;
fp = fopen(filename,"rb");
STUD tstud = {0,"",0.0}; // 이진파일에서 읽어온 구조체내용을 넣을 구조체
STUD* b =(STUD*)malloc(sizeof(STUD)*200); // 구조체 동적할당 rb에 내용을 넣어야함
for(i=0;i<2;i++) // 구조체에 잘 들어갔나 확인
printf("%d %s %lf\n", b[i].id, b[i].name, b[i].points);
fclose(fp);
return NULL;
}
void save_students_binary(STUD *ps, char *filename) {
FILE *fd = fopen(filename, "wb");
STUD *pcur = ps;
int nitem = 0;
if (fd) {
while (pcur->id > 0) pcur++;
fwrite(ps, sizeof(STUD), pcur - ps, fd);
fclose(fd);
}
}
int main(void) {
char *filename = "binary";
STUD test_data[] = { {1, "Choi", 9.9}, {2, "Park", 0.1}, {3, "Kim", 5.0 },
{4, "Lee", 9.9 }, {5, "Moon", 9.5 }, {6, "Kang", 7.0 }, {7, "Jeon", 0.9 }, {-1, "", 0 } };
STUD *students = test_data;
save_students_binary(students, filename);
read_students_binary(filename);
return 0;
}
main에 있는 testdata 구조체를 이진파일에 옮겨넣고 그걸 다시 읽어들이는 함수를 만드는데요
아직 읽어들이는 read students binary에서 동적할당된 구조체 b에 내용 옮겨쓴단 코드 쓴적도 없는데
이대로 실행하면 b에 testdata가 그대로 들어가는 이유가 뭔가요????
댓글 0