4주차: 한달� �었으니 한번 �아보�
- 변수, ì œì–´ë¬¸, 함수, ë°°ì—´, í�¬ì�¸í„°, 구조체 복습 복습 + File I/O -
ì�´ë²ˆ 시간ì—� ì�´ê±´ ê¼ í•´ì•¼ ë�¼!
1. Wikiì—� Ice breaking ë°� ì§„í–‰ ìƒ�황 ì •ë¦¬.
2. 구글 협업 ê³¼ì œ 확ì�¸ ë°� ëŠ�린 복습 후 수업 ì§„í–‰
3. 파ì�¼ ìž…ì¶œë ¥ ì˜ˆì œë¥¼ 통한 ìž�ì‹ ë§Œì�˜ ë�°ì�´í„° 파ì�¼ 만들어보기
- 변수, ì œì–´ë¬¸, 함수, ë°°ì—´, í�¬ì�¸í„°, 구조체 복습 복습 + File I/O -
ì�´ë²ˆ 시간ì—� ì�´ê±´ ê¼ í•´ì•¼ ë�¼!
1. Wikiì—� Ice breaking ë°� ì§„í–‰ ìƒ�황 ì •ë¦¬.
2. 구글 협업 ê³¼ì œ 확ì�¸ ë°� ëŠ�린 복습 후 수업 ì§„í–‰
3. 파ì�¼ ìž…ì¶œë ¥ ì˜ˆì œë¥¼ 통한 ìž�ì‹ ë§Œì�˜ ë�°ì�´í„° 파ì�¼ 만들어보기
1. ì •ë³´ì €ìž¥ì�€ 왜 필요한가?
ì�´ë²ˆ 단ì›�ì—�서 배워 ë³¼ ë‚´ìš©ì�€ í�¬ê²Œ '파ì�¼' ì�´ë�¼ê³ í• ìˆ˜ 있습니다.
파ì�¼ì�€ ìš´ì˜�ì²´ì œì—� ì�˜í•´ì„œ ì§�ì ‘ 관리ë�˜ëŠ” 대ìƒ�ì�´ê¸° 때문ì—� 파ì�¼ì�„ ë‹¤ë£¨ë ¤ë©´, ìš°ì„ ìš´ì˜�ì²´ì œì™€ 파ì�¼ê³¼ì�˜ 관계를 ì�´í•´í•´ì•¼ 합니다.
파ì�¼ì�€ 메모리와 ê°™ì�€ 주기억장치가 아닌, 하드 디스í�¬ ê°™ì�€ 보조기억장치ì—� ì €ìž¥ë�˜ëŠ” 기본 단위입니다. 파ì�¼ì—�는, ê·¸ ì–´ë–¤ 프로그램ì�´ë�˜ ê°„ì—� 무조건 프로그램ì�´ 작성한 ì •ë³´ê°€ ì €ìž¥ë�˜ëŠ”ë�°ìš”. 프로그램ì�€ 꽤나 ë§Žì�´, 실행 중ì—� 파ì�¼ì�„ 새로 만들거나 등ì�˜ í–‰ë�™ì�„ 해서 파ì�¼ì�„ 액세스해야 하는 경우가 ìƒ�ê¹�니다. ê·¸ë ‡ê¸° 때문ì—� ì •ë³´ì�˜ ì €ìž¥ê³¼ 불러오기가 ê¼ í•„ìš”í•©ë‹ˆë‹¤. 그걸 간단하게 ë‘� 개로 ì„¤ëª…í•´ë³´ê² ìŠµë‹ˆë‹¤.
1.1 프로그램ì�˜ 실행 파ì�¼ì—�는 í�¬ê¸°ì�˜ ì œì•½ì�´ 있기 때문ì—� 프로그램ì�´ ê°€ì§€ê³ ìž� 하는 ëª¨ë“ ë�°ì�´í„°ë¥¼ 가질 수 없습니다. 그래서 í�° ì •ë³´ëŠ” 외부ì�˜ 파ì�¼ì—� ë‘�ê³ , 실행 중ì—� 파ì�¼ì�„ ì�½ì–´ì„œ 사용하는 방법ì�„ í�”히 쓰게 ë�©ë‹ˆë‹¤. 예를 들어 게임 프로그램ì—�는 BGM, 효과ì�Œ, 사진, 그림, ë�™ì˜�ìƒ� 등ì�˜ 파ì�¼ì�„ ì�½ì–´ì„œ ì¶œë ¥í•˜ê²Œ ë�©ë‹ˆë‹¤.
파ì�¼ì�€ ìš´ì˜�ì²´ì œì—� ì�˜í•´ì„œ ì§�ì ‘ 관리ë�˜ëŠ” 대ìƒ�ì�´ê¸° 때문ì—� 파ì�¼ì�„ ë‹¤ë£¨ë ¤ë©´, ìš°ì„ ìš´ì˜�ì²´ì œì™€ 파ì�¼ê³¼ì�˜ 관계를 ì�´í•´í•´ì•¼ 합니다.
파ì�¼ì�€ 메모리와 ê°™ì�€ 주기억장치가 아닌, 하드 디스í�¬ ê°™ì�€ 보조기억장치ì—� ì €ìž¥ë�˜ëŠ” 기본 단위입니다. 파ì�¼ì—�는, ê·¸ ì–´ë–¤ 프로그램ì�´ë�˜ ê°„ì—� 무조건 프로그램ì�´ 작성한 ì •ë³´ê°€ ì €ìž¥ë�˜ëŠ”ë�°ìš”. 프로그램ì�€ 꽤나 ë§Žì�´, 실행 중ì—� 파ì�¼ì�„ 새로 만들거나 등ì�˜ í–‰ë�™ì�„ 해서 파ì�¼ì�„ 액세스해야 하는 경우가 ìƒ�ê¹�니다. ê·¸ë ‡ê¸° 때문ì—� ì •ë³´ì�˜ ì €ìž¥ê³¼ 불러오기가 ê¼ í•„ìš”í•©ë‹ˆë‹¤. 그걸 간단하게 ë‘� 개로 ì„¤ëª…í•´ë³´ê² ìŠµë‹ˆë‹¤.
1.2 프로그램ì�´ 작업한 결과를 ì˜�구ì �으로 보존하기 위해서ë�„ 파ì�¼ì�„ 외부ì—� ì €ìž¥í•©ë‹ˆë‹¤. ì�´ëŠ” 당연한 ê±°ê² ì£ ? 우리가 그림íŒ�ì�„ 통해 작업ì�„ í•˜ê³ ë‚œ ë’¤ì—�는 í•ìƒ� ì €ìž¥ì�„ 합니다. ì�´ì™€ ê°™ì�€ ì�´ì¹˜ìž…니다. 만약 게임ì�˜ ì �수 ì •ë³´ê°€ 담긴 파ì�¼ì�„ ì €ìž¥í•œë‹¤ë“ ê°€ 등ì—�ë�„ 필요합니다.
2. 실습 ì˜ˆì œ2.1 기본 파ì�¼ 쓰기 ì˜ˆì œ
#include<stdio.h>
int main(){
2.2 ì ˆëŒ€ê²½ë¡œë¥¼ 통한 파ì�¼ 복사 ì˜ˆì œ
#include <stdio.h>
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;
}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;
#include <stdio.h>
int main()
{
ìž…ë ¥ : 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해오기 매뉴얼ì�„ ì�½ê³ ê°�ìž�ì�˜ 프로ì �트ë�„ ìƒ�성해보세요.
{
FILE *fp_source, *fp_dest;
char oneByte;
char source50, dest50;
scanf("%s %s", source, dest);
fp_source = fopen(source, "rb");
fp_dest = fopen(dest, "wb");
while(!feof(fp_source)) {
printf("성공ì �으로 복사가 완료ë�˜ì—ˆìŠµë‹ˆë‹¤!\n");
fclose(fp_source);
fclose(fp_dest);
return 0;
}char oneByte;
char source50, dest50;
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);
}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해오기 매뉴얼ì�„ ì�½ê³ ê°�ìž�ì�˜ 프로ì �트ë�„ ìƒ�성해보세요.










