PowerPoint 프레젠테이션

Similar documents
PowerPoint 프레젠테이션

chap7.key

제1장 Unix란 무엇인가?

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

PowerPoint Template

Microsoft PowerPoint - 제11강 파일 처리

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

제7장 C 표준 파일 입출력

Microsoft PowerPoint - Chap14_FileAccess.pptx

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

제7장 C 표준 파일 입출력

슬라이드 1

歯9장.PDF

Microsoft PowerPoint - chap4 [호환 모드]

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

C Programming

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lesson13.pptx

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

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

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 10_C_Language_Text_Files

BMP 파일 처리

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

11장 포인터

설계란 무엇인가?

Microsoft PowerPoint APUE(Intro).ppt

제12장 파일 입출력

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

쉽게 풀어쓴 C 프로그래밍

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

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

본 강의에 들어가기 전

ABC 11장

2007_2_project4

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

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

Microsoft PowerPoint - Ch12.파일.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>

<4D F736F F F696E74202D FC6C4C0CF20C0D4C3E2B7C2205BC8A3C8AF20B8F0B5E55D>

2009년 상반기 사업계획

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

슬라이드 1

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

Microsoft PowerPoint - chap1 [호환 모드]

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

Computer Programming (2008 Fall)

Microsoft PowerPoint 웹 연동 기술.pptx

제1장 Unix란 무엇인가?

<4D F736F F F696E74202D20C1A63136C0E520C6C4C0CFC0D4C3E2B7C2>

OCW_C언어 기초

Microsoft PowerPoint - ch07 - 포인터 pm0415

PowerPoint Presentation

The Pocket Guide to TCP/IP Sockets: C Version

MATLAB for C/C++ Programmers

C 프로그램의 기본

03 상수, 변수, 자료형

슬라이드 1

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

<4D F736F F F696E74202D D20B9AEC0DABFAD2C20BDBAC6AEB8B2B0FA20C6C4C0CF20C0D4C3E2B7C2>

PowerPoint 프레젠테이션

Microsoft PowerPoint - 11_C_Language_C_Standard_Library

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

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


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

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

KNK_C_05_Pointers_Arrays_structures_summary_v02

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint 프레젠테이션

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

슬라이드 1

Microsoft PowerPoint APUE(File InO).pptx

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

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

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

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

The Pocket Guide to TCP/IP Sockets: C Version

데이타전송

Microsoft PowerPoint - chap06-1Array.ppt

11장 포인터

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

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

슬라이드 1

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

untitled

PowerPoint 프레젠테이션

Microsoft PowerPoint - 제9강 문자열

PowerPoint 프레젠테이션

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

chap 5: Trees

Microsoft PowerPoint - chap4_2013 [호환 모드]

MATLAB for C/C++ Programmers

PowerPoint 프레젠테이션

졸업논문 되어자전거의현재정보를알려주게된다 시스템의동작절차그림 3-1 리더에서의자전거정보조회동작절차위에동작절차에서알수있듯이리더에서하는동작절차에서는크게 부분으로나눌수있다 리더에서에너지를보내 로부터데이터가전송되면자전거의정보를확인한다 여기서도난당한자전거인

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

Lab 3. 실습문제 (Single linked list)_해답.hwp

Transcription:

파일입출력 Heeseung Jo

이장의내용 파일과파일포인터 파일입출력함수 임의접근파일처리 2

파일과파일포인터

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

C 언어의파일종류 텍스트파일 (text file) 사람들이읽을수있는문자들을저장하고있는파일 텍스트파일에서 " 한줄의끝 " 을나타내는표현은파일이읽어들여질때, C 내부의방식으로변환 예, a.txt, main.c, mylib.h,... 이진파일 (binary file) 모든데이터는있는그대로바이트의연속으로저장 이진파일을이용하여메모리에저장된변수값형태그대로파일에저장 예, a.jpg, 1.mp3, 2.mp4,... 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 모드 9

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

파일입출력함수

파일입출력함수 12

줄단위입출력 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 값을리턴 13

14

파일이름을인수로주어야함 15

포맷입출력 fprintf() 함수 printf() 함수와같은방법으로파일에데이터를츨력 int fprintf(file *fp, const char *format,...); - fprintf 함수의첫번째인수 fp 는츨력할파일에대한 FILE 포인터 - 두번째부터의인수는 printf 함수와동일 fscanf() 함수 scanf() 함수와같은방법으로파일로부터데이터를읽어들일수있음 int fscanf(file *fp, const char *format,...); - fscanf 함수의첫번째인수 fp 는입력받을파일에대한 FILE 포인터 - 두번째부터의인수는 scanf 함수와동일 16

17

18

기타파일관련함수 int feof(file *fp) 파일포인터 fp 가파일의끝을탐지하면 0 이아닌값을리턴 파일끝이면 0 을리턴 int fflush(file *fp) 아직기록되지않고버퍼에남아있는데이터를 fp 가가리키는출력파일에저장 버퍼비우기기능을수행하는함수 19

이진파일

블록입출력 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 개기록 성공적으로출력한블록개수를리턴 21

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

fwrite(), fread() fwrite(&record, sizeof(record), 1, fp); fread(&record, sizeof(record), 1, fp); 23

이진파일입출력모드 24

25

26

27

임의접근파일처리

파일내위치 파일위치 (file position) 열린파일에서다음읽거나기록할파일내위치 파일위치지정자 (file position indicator) 시스템내에그파일의파일위치를저장하고있음 fgets() 나 fread() 로지속적으로읽으면처음부터끝까지읽게되는이유 -> 위치지정자가어디까지읽었는지를알고있기때문임 29

파일위치관련함수 fseek(file *fp, long offset, int mode) 파일위치지정자를임의로설정할수있는함수 rewind(file *fp) 파일위치를파일시작점에위치시킴 ftell(file *fp) 파일의현재파일위치를나타내는파일위치지정자값리턴 30

파일위치관련함수 fseek(file *fp, long offset, int mode) FILE 포인터 fp 가가리키고파일의파일위치를모드 (mode) 기준으로오프셋 (offset) 만큼옮김 31

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

fseek() 사용예 예 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); 33

예제프로그램 구조체를이용하여학생정보를파일에저장한다 시작 ID(START_ID) 로부터상대적인위치에저장 (record.id - START_ID) * sizeof(record) 파일에저장된특정학생의데이터를검색해서출력 시작 ID(START_ID) 로부터상대적인위치에서읽음 (id - START_ID) * sizeof(record) 34

35

36

37

38

프로그래밍실습

프로그래밍실습 도서관리시스템 도서에대한데이터입력과도서에대한열람기능을제공하는간단한도서관리시스템을구현 이시스템은도서입력과도서열람을위한두개의프로그램으로구성 1. 헤더파일 book.h 작성 struct book { }; int seq; char title[50]; char author[20]; int price; 40

프로그래밍실습 2. 도서입력프로그램 도서관에새로운책이들어올때마다책에대한정보를입력받아파일에저장 책에대한정보는이름, 저자, 가격이며책이들어오는순서에따라 1 번부터일련번호를부여 2.1 book.h 헤더파일을 include 2.2 FILE 포인터, struct book 타입의필요한변수를선언 2.3 fopen() 함수를이용하여도서정보를저장하기위한파일을오픈 2.4 scanf() 함수를이용하여새로들어온책에대한정보를입력받아구조체변수에저장 2.5 fwrite() 함수를이용하여구조체변수에있는책정보를파일에저장 2.6 2.3 부터 2.5 의과정을더이상입력이없을때까지반복 41

프로그래밍실습 3. 도서열람프로그램 책의일련번호를입력받아해당책정보를찾아출력해주는프로그램을작성 3.1 book.h 헤더파일을 include 3.2 FILE 포인터, struct book 타입의필요한변수를선언 3.3 fopen() 함수를이용하여도서정보를저장하기위한파일을오픈 3.4 책일련번호를입력받고해당책의레코드위치를계산 3.5 fread() 함수를이용하여해당레코드를읽어서구조체변수에저장 3.6 읽어온책에대한정보를출력 42