4주차: 한달이 되었으니 한번 돌아보자
- 변수, 제어문, 함수, 배열, 포인터, 구조체 복습 복습 + File I/O -
이번 시간에 이건 꼭 해야 돼!
1. Wiki에 Ice breaking 및 진행 상황 정리.
2. 구글 협업 과제 확인 및 느린 복습 후 수업 진행
3. 파일 입출력 예제를 통한 자신만의 데이터 파일 만들어보기
1. 정보저장은 왜 필요한가?
이번 단원에서 배워 볼 내용은 크게 '파일' 이라고 할 수 있습니다.
파일은 운영체제에 의해서 직접 관리되는 대상이기 때문에 파일을 다루려면, 우선 운영체제와 파일과의 관계를 이해해야 합니다.
파일은 메모리와 같은 주기억장치가 아닌, 하드 디스크 같은 보조기억장치에 저장되는 기본 단위입니다. 파일에는, 그 어떤 프로그램이던 간에 무조건 프로그램이 작성한 정보가 저장되는데요. 프로그램은 꽤나 많이, 실행 중에 파일을 새로 만들거나 등의 행동을 해서 파일을 액세스해야 하는 경우가 생깁니다. 그렇기 때문에 정보의 저장과 불러오기가 꼭 필요합니다. 그걸 간단하게 두 개로 설명해보겠습니다.
1.1 프로그램의 실행 파일에는 크기의 제약이 있기 때문에 프로그램이 가지고자 하는 모든 데이터를 가질 수 없습니다. 그래서 큰 정보는 외부의 파일에 두고, 실행 중에 파일을 읽어서 사용하는 방법을 흔히 쓰게 됩니다. 예를 들어 게임 프로그램에는 BGM, 효과음, 사진, 그림, 동영상 등의 파일을 읽어서 출력하게 됩니다.
1.2 프로그램이 작업한 결과를 영구적으로 보존하기 위해서도 파일을 외부에 저장합니다. 이는 당연한 거겠죠? 우리가 그림판을 통해 작업을 하고 난 뒤에는 항상 저장을 합니다. 이와 같은 이치입니다. 만약 게임의 점수 정보가 담긴 파일을 저장한다든가 등에도 필요합니다.
2. 실습 예제
2.1 기본 파일 쓰기 예제
#include<stdio.h>
int main(){
FILE *ftr = fopen("C:\\입출력함수.txt","w");
FILE *ftr2;
int ten = 10;
int get = 0;
fprintf(ftr, "%d",ten);
fclose(ftr);
ftr2 = fopen("C:\\입출력함수.txt","r");
fscanf(ftr, "%d",&get);
printf("%d",get);
return 0;
}
2.2 절대경로를 통한 파일 복사 예제
#include <stdio.h>
int main()
{
FILE *fp_source, *fp_dest;
char oneByte;
char source
50, dest
50;
scanf("%s %s", source, dest);
fp_source = fopen(source, "rb");
fp_dest = fopen(dest, "wb");
while(!feof(fp_source)) {
oneByte = fgetc(fp_source);
fputc(oneByte, fp_dest);
}
printf("성공적으로 복사가 완료되었습니다!\n");
fclose(fp_source);
fclose(fp_dest);
return 0;
}
입력 : C:\5.png C:\copy\5.png 주의~! 진짜 파일이 있어야함.
3. 코딩
KeyWord (선생님들께 질문해보세요)
3.1 운영 체제와 메모리
3.2 FILE 구조체
3.3 절대경로와 상대경로
3.4 파일 입출력 스트림 fopen, fclose, fscanf, fprintf
3.5 stdin, stdout
3.7 리다이렉션
4. 과제
버전 관리 시스템의 계정을 만들어보고 fork하고 pull request해오기 매뉴얼을 읽고 각자의 프로젝트도 생성해보세요.