작은숲:위키노트/C 언어 예제/구조체를 이진 파일에 저장: 두 판 사이의 차이
보이기
잔글 문자열 찾아 바꾸기 - "분류:공유" 문자열을 "분류:위키노트/공유" 문자열로 |
잔글 문자열 찾아 바꾸기 - "<source" 문자열을 "<syntaxhighlight" 문자열로 |
||
| 1번째 줄: | 1번째 줄: | ||
< | <syntaxhighlight lang="c"> | ||
/** | /** | ||
* Copyright (c) 2001,2002 Yoon, Hyunho <hhyoon@kldp.org> | * Copyright (c) 2001,2002 Yoon, Hyunho <hhyoon@kldp.org> | ||
2021년 3월 28일 (일) 12:51 판
<syntaxhighlight lang="c"> /**
* Copyright (c) 2001,2002 Yoon, Hyunho <hhyoon@kldp.org> * http://mooo.org * ---------------------------------------------------------------------- * * LICENSE * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/**
* 1. 구조체를 선언하여 파읽에서 읽어와 그것을 구조체 배열에 저장한다. * 2. 구조체 배열에 저장된 내용을 평균을 기준으로 정렬을 한다. * 3. 구조체 배열에 저장된 내용을 출력한다. */
- include <stdio.h>
- include <stdlib.h>
- include <string.h>
- define MAX_NAME 30
- define MAX_STUDENTS 100
// 구조체를 선언하고 typedef문을 사용하여 새로운 데이터형을 만든다. typedef struct { char name[MAX_NAME];
int num; int korean; int english; int math; int science; int computer; float average;
} Student; int main() { int i, num;
Student student[MAX_STUDENTS];
// 스트림 포인터를 선언한다.
FILE *data;
// 파일을 읽기 모드로 연다.
// 만약 파일을 여는데 실패했을 경우 프로그램을 종료시킨다.
if ((data = fopen("data.txt", "r")) == NULL) {
printf("Cannot open the data file!\n");
exit(0);
}
fscanf(data, "%d", &num);
for (i = 0; i < num; i++) {
fgetc(data);
fgets(student[i].name, 81, data);
fscanf(data, "%d %d %d %d %d %d", &student[i].num, &student[i].korean,
&student[i].english, &student[i].math, &student[i].science,
&student[i].computer);
}
fclose(data);
if ((data = fopen("data2.txt", "wb")) == NULL) {
printf("Cannot open the data file!\n");
exit(0);
}
fwrite(&num, sizeof(int), 1, data);
fwrite(student, sizeof(Student), num, data);
fclose(data);
if ((data = fopen("data2.txt", "rb")) == NULL) {
printf("Cannot open the data file!\n");
exit(0);
}
fread(&num, sizeof(int), 1, data);
fread(student, sizeof(Student), num, data);
fclose(data);
return 0;
}</source>