PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

chap7.key

제1장 Unix란 무엇인가?

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

PowerPoint Template

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - 제11강 파일 처리

제7장 C 표준 파일 입출력

Microsoft PowerPoint - chap4 [호환 모드]

슬라이드 1

Microsoft PowerPoint - Chap14_FileAccess.pptx

금오공대 컴퓨터공학전공 강의자료

제7장 C 표준 파일 입출력

歯9장.PDF

Microsoft PowerPoint - 09_(C_Programming)_(Korean)_File_Processing

C Programming

PowerPoint 프레젠테이션

제1장 Unix란 무엇인가?

Microsoft PowerPoint - Lesson13.pptx

Microsoft PowerPoint - chap11-1.ppt [호환 모드]

Microsoft PowerPoint - 10_C_Language_Text_Files

Microsoft PowerPoint - chap11.ppt [호환 모드]

설계란 무엇인가?

11장 포인터

Microsoft PowerPoint APUE(Intro).ppt

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밊

제12장 파일 입출력

BMP 파일 처리

쉽게 풀어쓴 C 프로그래밍

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

2009년 상반기 사업계획

<4D F736F F F696E74202D FC6C4C0CF20C0D4C3E2B7C2205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - C프로그래밍-chap16.ppt

ABC 11장

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap1 [호환 모드]

PowerPoint 프레젠테이션

Microsoft PowerPoint - Ch12.파일.pptx

본 강의에 들어가기 전

Microsoft PowerPoint - 11_C_Language_C_Standard_Library

윤성우의 열혈 TCP/IP 소켓 프로그래밊

Computer Programming (2008 Fall)

슬라이드 1

Microsoft PowerPoint - C프로그래밍-chap15.ppt [호환 모드]

표준입출력스트림 기본적인스트림들은프로그래머가생성하지않아도자동으로생성된다. 이름스트림연결장치 stdin 표준입력스트림키보드 stdout 표준출력스트림모니터의화면 stderr 표준오류스트림모니터의화면 입출력함수의분류 사용하는스트림에따른분류 표준입출력스트림을사용하여입출력을하

<4D F736F F F696E74202D20C1A63136C0E520C6C4C0CFC0D4C3E2B7C2>

2007_2_project4

제1장 Unix란 무엇인가?

Microsoft PowerPoint - chap06-2pointer.ppt

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

C 프로그램의 기본

Microsoft PowerPoint - 제9강 문자열

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - Lecture 4-1 Linux File Environment.ppt [호환 모드]

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint APUE(File InO).pptx

OCW_C언어 기초

PowerPoint Presentation

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - C_Programming_Basics.ppt [호환 모드]

untitled

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap06-1Array.ppt

슬라이드 1

03 상수, 변수, 자료형

MATLAB for C/C++ Programmers

데이타전송

금오공대 컴퓨터공학전공 강의자료

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

KNK_C_05_Pointers_Arrays_structures_summary_v02

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - chap06-4 [호환 모드]

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

슬라이드 1

Microsoft PowerPoint - chap12.ppt [호환 모드]

13 주차문자열의표현과입출력

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning


슬라이드 1

PowerPoint 프레젠테이션

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - ch09_파이프 [호환 모드]

2009년 상반기 사업계획

윤성우의 열혈 TCP/IP 소켓 프로그래밍

MATLAB for C/C++ Programmers

C 언어 프로그래밊 과제 풀이

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

11장 포인터

Microsoft PowerPoint APUE(File InO).ppt

설계란 무엇인가?

UI TASK & KEY EVENT

Transcription:

오픈소스소프트웨어개발입문 (CP33992) 파일입출력 부산대학교공과대학정보컴퓨터공학부

학습목표 파일의기본개념과특징을이해할수있다. 파일처리과정을이해할수있다. 형식을지정한파일입출력함수의사용법을알수있다. 2

파일과파일포인터 3

파일 C 의파일은모든데이터를연속된바이트형태로저장한다. 4

텍스트파일 (text file) C 언어의파일종류 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 한줄의끝 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환된다. 이진파일 (binary file) 모든데이터는있는그대로바이트의연속으로저장 이진파일을이용하여메모리에저장된변수값형태그대로파일에저장할수있다. 5

파일열기 파일을사용하기위해서는 반드시먼저파일열기 (fopen) 를해야한다. 파일열기를하면 FILE ( 구조체에대한 ) 포인터가리턴된다. FILE 포인터는열린파일을지정한다. FILE 구조체 stdio.h 에정의되어있음. 열려진파일의현재상태를나타내는필드변수들 특히파일입출력에사용되는버퍼관련변수들 6

표준입출력 stdin, stdout, stderr 각각표준입력, 표준출력, 표준오류를나타내는 FILE 포인터 C 프로그램이실행되면자동적으로열리고프로그램이종료될때자동으로닫힘 표준입출력포인터 7

파일열기 함수 fopen() 예 예 FILE *fopen(const char *filename, const char *mode); const char *filename: 파일명에대한포인터 const char *mode: 모드로파일을여는형식 FILE *fp; fp = fopen("c:\work\text.txt", "r"); if (fp == NULL) { printf(" 파일열기오류 \n"); } fp = fopen("outdata.txt", "w"); fp = fopen("outdata.txt", "a"); 8

fopen 모드 fopen 함수의텍스트파일입출력모드 9

파일닫기 파일을열어서사용한후에는파일을닫아야한다. int fclose(file *fp ); fp는 fopen 함수에서받았던포인터 닫기에성공하면 0, 오류일때는 EOF( -1) 를리턴한다. 예 fclose(fp); 10

파일입출력함수 11

파일입출력함수 표준입출력함수와표준파일입출력함수 12

문자단위입출력 fgetc() 함수와 fputc() 함수 파일에문자단위입출력을할수있다. int fgetc(file *fp); getc 함수는 fp 가지정한파일에서한문자를읽어서리턴한다. 파일끝에도달했을경우에는 EOF(-1) 를리턴한다. int fputc(int c, FILE *fp); putc 함수는파일에한문자씩출력하는함수 리턴값으로출력하는문자리턴 출력시오류가발생하면 EOF(-1) 리턴 예 [ 프로그램 14-1] 키보드에서문자를입력받아모니터에출력 (copy1.c) [ 프로그램 14-2] 키보드에서문자를입력받아파일에출력 (copy2.c) [ 프로그램 14-3] 파일복사프로그램 (copy3.c) 학습 point: 표준파일입출력함수인 fputc를이용한표준입출력동작이해 13

프로그램 14-1 14

프로그램 14-2 fputc 15

프로그램 14-3 16

기타파일관련함수 int feof(file *fp) 파일포인터 fp 가파일의끝을탐지하면 0 이아닌값을리턴하고파일끝이면 0 을리턴한다. int ungetc(int c, FILE *p) c 에저장된문자를입력스트림에반납한다. 마치문자를읽지않은것처럼파일 위치지정자를 1 감소시킨다. int fflush(file *fp) 아직기록되지않고버퍼에남아있는데이터를 fp 가가리키는출력파일에보낸 다. 버퍼비우기기능을수행하는함수이다. 17

줄단위입출력 fgets() 함수와 fputs() 함수 텍스트파일에서한줄씩읽거나쓸수있다. char* fgets(char *s, int n, FILE *fp); 파일로부터한줄을읽어서문자열포인터 s에저장하고 s를리턴 개행문자 ('\n') 나 EOF를만날때까지파일로부터최대 n-1 개의문자를읽고읽어온데이터의끝에는 NULL 문자를붙여준다. 파일을읽는중파일끝혹은오류가발생하면 NULL 포인터리턴. int fputs(const char *s, FILE *fp); 문자열 s를파일포인터 fp가가리키는파일에출력 성공적으로출력한경우에는출력한바이트수를리턴 출력할때오류가발생하면 EOF 값을리턴 예 [ 프로그램 14-4] 줄번호와함께출력하는프로그램 (line.c) 학습 point: fgets 를이용한파일의줄단위읽기 18

프로그램 14-4 19

포맷입출력 fprintf() 함수 printf() 함수와같은방법으로파일에데이터를츨력할수있다. fscanf() 함수 scanf() 함수와같은방법으로파일로부터데이터를읽어들일수있다. int fprintf(file *fp, const char *format,...); fprintf 함수의첫번째인수 fp 는츨력할파일에대한 FILE 포인터 두번째부터의인수는 printf 함수와동일 int fscanf(file *fp, const char *format,...); fscanf 함수의첫번째인수 fp 는입력받을파일에대한 FILE 포인터 두번째부터의인수는 scanf 함수와동일 예 [ 프로그램 14-5] 학생정보를읽어텍스트파일에저장하는프로그램 (fprint.c) [ 프로그램 14-6] 텍스트파일에서학생정보를읽어출력한다. (fscan.c) 학습 point: fprintf() 와 fscanf() 를이용한포맷입력과출력 20

프로그램 14-5 student.h }; 21

프로그램 14-6 22

이진파일 23

블록입출력 (1/2) fread() 와 fwrite() 한번에일정한크기의데이터를파일에읽거나쓰기위한입출력함수 int fread(void *buf, int size, int n, FILE *fp); fp 가가리키는파일에서 size 크기의블록 ( 연속된바이트 ) 을 n 개읽어서 버퍼포인터 buf 가가리키는곳에저장 읽어온블록의개수를리턴 int fwrite(const void *buf, int size, int n, FILE *fp); 파일포인터 fp가지정한파일에버퍼 buf에저장되어있는 size 크기의블록 ( 연속된바이트 ) 을 n개기록 성공적으로출력한블록개수를리턴 24

블록입출력 (2/2) 기본아이디어 어떤자료형의데이터이던지그데이터를연속된바이트로해석해서파일에저장 파일에저장된데이터를연속된바이트형태로읽어서원래자료형변수에순서대로저장하여원래데이터를그대로복원 예 : record 저장 / 읽기 struct student record; FILE *fp = fopen("intfile", "wb+"); 25

fwrite(), fread() fwrite(&record, sizeof(record), 1, fp); 파일에 record 구조체쓰기 fread(&record, sizeof(record), 1, fp); 파일로부터 record 구조체읽기 26

이진파일입출력모드 fopen 의이진파일입출력모드 예 [ 프로그램 14-7] 구조체를이용하여학생정보를파일에저장 (stcreate1.c) 학습 point: 이진파일출력함수인 fwrite 함수를활용하여학생정보를파일에저장할수있다. [ 프로그램 14-8] 파일에저장된모든학생정보를읽어서출력 (stprint.c) 학습 point: 이진파일입력함수인 fread 함수를활용하여학생정보를파일로부터읽어서출력할수있다. 27

프로그램 14-7 28

프로그램 14-8 29

임의접근파일처리 30

파일내위치 파일위치 (file position) 열린파일에서다음읽거나기록할파일내위치 파일위치지정자 (file position indicator) 시스템내에그파일의파일위치를저장하고있다. 31

파일위치관련함수 1 fseek(file *fp, long offset, int mode) 파일위치지정자를임의로설정할수있는함수이다. rewind(file *fp) 파일위치를파일시작점에위치시켜처음부터다시읽을수있도록 ftell(file *fp) 파일의현재파일위치를나타내는파일위치지정자값리턴 32

fseek() fseek(file *fp, long offset, int mode) FILE 포인터 fp가가리키고파일의파일위치를 모드 (mode) 기준으로오프셋 (offset) 만큼옮긴다. fseek 함수의모드 fseek 함수의역할 33

fseek() 사용예 (1/2) 예 1 fseek(fp, 0L, SEEK_SET) 파일처음으로이동 (rewind) fseek(fp, 100L, SEEK_CUR) 현재위치에서 100 바이트우로이동 fseek(fp, 0L, SEEK_END) 파일끝으로이동 (append) 예 2 fseek(fp, n * sizeof(record), SEEK_SET) n+1번째레코드시작위치로이동 fseek(fp, sizeof(record), SEEK_CUR) 다음레코드시작위치로이동 fseek(fp, sizeof(record), SEEK_CUR) 전레코드시작위치로이동 34

fseek() 사용예 (2/2) 예 3 fwrite(&record1, sizeof(record), 1, fp); fwrite(&record2, sizeof(record), 1, fp); fseek(fp, sizeof(record), SEEK_END); // 파일끝에서한레코드다음위치로이동 fwrite(&record3, sizeof(record), 1, fp); 35

파일위치관련함수 2 rewind(file *fp) 파일위치를파일시작점에위치시켜처음부터다시읽을수있도록한다. ftell(file *fp) 파일의현재파일위치를나타내는파일위치지정자값리턴 36

예제프로그램 [ 프로그램 14-9] 구조체를이용하여학생정보를파일에저장 (stcreate2.c) 학습 point: 이진파일출력함수인 fwrite 함수와임의접근파일함수인 fseek을활용하여학생정보를파일에저장할수있다. [ 프로그램 14-10] 파일에저장된특정학생의정보를검색해서출력 (stquery.c) 학습 point: 이진파일입력함수인 fread 함수와임의접근파일함수인 fseek을활용하여학생정보를파일로부터검색할수있다. 37

프로그램 14-9 fseek 과 fwrite 함수를이용한 record field 의파일출력 38

프로그램 14-10 fseek 과 fread 함수를이용한 record field 에대한임의접근과검색 39

프로그램실습 전화번호관리프로그램에서전화번호를 phonebook.txt 파일에저장하도록수정하시오. 프로그램 Tip 프로그램이시작될때맨먼저 book 배열을phonebook.txt 파일에서읽은정보로초기화하고실행을끝내기전에 phonebook.txt 파일을 book 배열의내용으로새로쓰는작업을추가해야함 그러나이방법은등록이나제거작업을한후프로그램이정상적으로종료되지않고갑자기중단되는경우등록과제거작업이 phonebook.txt 파일에전혀반영되지않음 이를해결하려면 1. 등록기능을실행할때마다 phonebook.txt 파일을추가모드로열어서새로등록한정보를파일끝에추가하며, 4. 제거기능을실행할때마다 book 배열에서정보를제거한후 phonebook.txt 파일을쓰기모드로열어서 book 배열의내용으로새로기록해야함 40