설계란 무엇인가?

Similar documents
12 장파일입출력 파일입출력의기초파일열기, 사용하기, 닫기파일입출력모드문자단위파일입출력텍스트파일과이진파일 read, write 함수에의한이진파일입출력임의접근입출력스트림상태입출력연산자오버로딩과파일입출력 C++ 프로그래밍입문

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

설계란 무엇인가?

Microsoft PowerPoint - [2009] 02.pptx

설계란 무엇인가?

설계란 무엇인가?

C++ Programming

C++ Programming

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

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

C프로-3장c03逞풚

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

Microsoft PowerPoint - C++ 5 .pptx

PowerPoint 프레젠테이션

설계란 무엇인가?

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

PowerPoint 프레젠테이션

KNK_C_05_Pointers_Arrays_structures_summary_v02

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

Slide 1

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - chap06-2pointer.ppt

PowerPoint 프레젠테이션

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

쉽게 풀어쓴 C 프로그래밍

C++ Programming

PowerPoint 프레젠테이션

BMP 파일 처리

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

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

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

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

2007_2_project4

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

Microsoft PowerPoint - Chapter 1-rev

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

PowerPoint 프레젠테이션

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

Microsoft PowerPoint APUE(Intro).ppt

PowerPoint Template

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

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

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

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

슬라이드 1

Microsoft PowerPoint - Chapter 6.ppt

11장 포인터

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

Microsoft PowerPoint - Chapter 10.ppt

슬라이드 1

쉽게 풀어쓴 C 프로그래밍

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

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

Microsoft PowerPoint - chap06-1Array.ppt

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

MATLAB for C/C++ Programmers

Microsoft PowerPoint - chap11-포인터의활용.pptx

080629_CFP °ø°³¿ë.hwp

제 1 장 기본 개념

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

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

Programming hwp

제12장 파일 입출력

Microsoft PowerPoint 웹 연동 기술.pptx

11장 포인터

1. C++ 표준라이브러리의구성 C++ 표준라이브러리의구성 본교재를통해소개할라이브러리 범주설명예관련장 / 절 입출력 표준입출력 파일입출력 ostream ofstream 11.2~11.9 절 12 장 문자열문자열처리 string 절 수치계산수치계산관련 comp

Microsoft PowerPoint - Chap12-OOP.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

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

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

Microsoft PowerPoint - Chap14_FileAccess.pptx

API 매뉴얼

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

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

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

OCW_C언어 기초

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

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

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

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

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

Slide 1

C++ Programming

Microsoft PowerPoint - 제11강 파일 처리

PowerPoint Template

PowerPoint Presentation

제1장 Unix란 무엇인가?

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

2002년 2학기 자료구조

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

프입2-강의노트-C++기초

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

Transcription:

금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하

16 강. 파일입출력목차 파일입출력기초 파일입출력모드 텍스트파일과이진파일 이진파일입출력 임의접근 1 /18

16 강. 파일입출력파일입출력기초 파일입출력과정 파일스트림객체생성 파일열기 사용 : 기본적으로표준입출력객체 (cin, cout) 사용방법과동일 파일닫기 파일스트림클래스의종류 파일출력스트림클래스 : ofstream 파일입력스트림클래스 : ifstream 파일입출력스트림클래스 : fstream 2 /18

16 강. 파일입출력파일입출력기초 파일출력예 파일스트림클래스포함 파일출력객체생성 #include <iostream> #include <fstream> using namespace std; ofstream fout; 파일열기 ( 연결 ) fout.open("a.txt"); cout 과동일하게사용 파일닫기 ( 연결해제 ) for (int i = 0; i < 10; i++) fout << i << " "; fout << endl; fout.close(); 3 /18

16 강. 파일입출력파일입출력기초 파일입력예 a.txt 로부터정수읽기 파일입력객체생성 파일열기 ( 연결 ) cin 과동일하게사용 ifstream fin; fin.open("a.txt"); int Sum = 0; int Num; for (int i = 0; i < 10; i++) fin >> Num; Sum += Num; cout << " 합계 : " << Sum << endl; 파일닫기 ( 연결해제 ) fin.close(); 4 /18

16 강. 파일입출력파일입출력모드 입출력스트림클래스의생성자 스트림객체생성과동시에파일열기 ( 연결 ) 가능 ofstream(char *filename, int mode = ios_base::out) ifstream(char *filename, int mode = ios_base::in) fstream(char *filename, int mode = ios_base::in ios_base::out) 파일입출력모드 파일 : 공유자원 파일사용권한획득필요 읽기, 쓰기, 읽기쓰기등모든설정 ofstream fout("a.txt"); fout << 123 << endl; fout.close(); 5 /18

16 강. 파일입출력파일입출력모드 파일입출력모드 fio.open( filename, Mode); 파일열기모드 : 읽기, 쓰기등 파일접근모드 : 텍스트, 이진 6 /18 모드 ( 상수 ) ios_base::in ios_base::out ios_base::ate ios_base::app ios_base::trunc ios_base::binary 입력 의미 출력, 이모드만설정시자동으로 ios_base::trunc 적용 파일 open 시입출력포인터 ( 현재읽기쓰기위치 ) 를파일끝으로이동, 모든위치에서읽고쓰고가능 파일읽기는모든위치에서가능, 쓰기는파일의마지막위치에추가만가능 해당파일이존재할경우파일의내용모두삭제 이진모드로열기

16 강. 파일입출력파일입출력모드 Ios_base::app 사용예 fstream fio("a.txt", ios_base::in ios_base::out ios_base::app); for (int i = 10; i < 20; i++) fio << i << " "; fio << endl; 데이터추가 마지막에추가 fio.seekg(0, ios_base::beg); 입력포인터 ( 읽기위치 ) 를처음으로이동 7 /18 int Sum = 0; int Num; for (int i = 0; i < 20; i++) fio >> Num; Sum += Num; cout << " 합계 : " << Sum << endl; fio.close(); 임의접근에서자세히설명 데이터읽기및확인

16 강. 파일입출력파일입출력모드 텍스트모드와이진모드 텍스트모드 : \n \r\n 두자로변환하여처리 이진모드 : \n \n 그대로처리 ofstream fout("a.txt"); fout << "123" << endl; fout.close(); ofstream fout("a.txt", ios_base::out ios_base::binary); fout << "123" << endl; fout.close(); 5byte : 123\r\n 4byte : 123\n 8 /18

16 강. 파일입출력텍스트파일과이진파일 메모리의데이터를파일로저장하는방법 문자화하여사람이읽기쉽게저장 텍스트파일 메모리의내용그대로파일로저장 이진파일 예 : int a = 15; 에서 a 의값 15 를파일로저장하는방법 15 2 문자 (2byte) 로 저장 4byte 메모리형태그대로 저장 다시 4byte 만큼읽어서 int 변수에저장하면 15 임 9 /18

16 강. 파일입출력텍스트파일과이진파일 텍스트파일과이진파일을만들고사용하는방법 파일스트림클래스의멤버함수의차이 << 연산자 : 텍스트파일로출력 >> 연산자 : 텍스트파일로입력 write 함수 : 이진파일로저장 read 함수 : 이진파일로입력 참고사항 파일열기모드 ( 텍스트모드, 이진모드 ) 와텍스트파일, 이진파일은원칙적으로무관함 그러나, 일반적으로텍스트파일은텍스트모드로열고, 이진파일은이진모드로열어작업 10 /18

16 강. 파일입출력이진파일입출력 read, write 멤버함수 istream &read(char *buffer, int size); ostream &write(char *buffer, int size); buffer : 입력또는출력데이터를저장할변수의주소 size : 데이터의크기 ( 바이트단위 ) ofstream fout("a.txt", ios_base::out ios_base::binary); int a = 15; fout.write((char *) &a, sizeof(int)); fout.close(); a 의시작주소로부터시작해서 4 바이트 (int) 만큼을 파일로저장 a 의값을메모리형태그대로저장 11 /18

16 강. 파일입출력이진파일입출력 read 함수사용예 ifstream fin("a.txt", ios_base::in ios_base::binary); int a; fin.read((char *) &a, sizeof(int)); cout << a << endl; fin.close(); 4 바이트 (int) 만큼파일로부터데이터를읽어 메모리의변수 a 의시작주소에저장함 int 값하나를읽어 a 에저장 12 /18

16 강. 파일입출력이진파일입출력 배열데이터의이진파일입출력예 ofstream fout("a.txt", ios_base::out ios_base::binary); double nums[4] = 1.1, 2.2, 3.3, 4.4 ; fout.write((char *) nums, sizeof(nums)); 배열의크기 (32바이트) 만큼 fout.close(); 쓰기 ifstream fin("a.txt", ios_base::in ios_base::binary); double nums2[4]; fin.read((char *) nums2, sizeof(nums2)); for (int i = 0; i < 4; i++) cout << nums2[i] << '\t'; cout << endl; 13 /18 cout << " 총바이트수 : " << fin.gcount() << endl; 마지막으로읽은데이터의바이트수

16 강. 파일입출력이진파일입출력 14 /18 구조체변수의이진파일입출력예 Point Po; struct Point int x, y; ; ofstream fout("a.txt",ios_base::out ios_base::binary); for (int i = 0; i < 5; i++) Po.x = Po.y = i; fout.write((char *) &Po, sizeof(point)); fout.close(); Po 데이터 (8바이트) 를파일로저장 ifstream fin("a.txt", ios_base::in ios_base::binary); while (fin.read((char *) &Po, sizeof(point))) cout << "(" << Po.x << ", " << Po.y << ")" << endl; 하나씩다시읽어오기 : 더이상읽을데이터 fin.close(); 없을경우 while문을빠져나오게됨

16 강. 파일입출력임의접근 스트림포인터 입력포인터 (get pointer ) : 다음입력위치를가리킴 출력포인터 (put pointer) : 다음출력위치를가리킴 입력과출력이진행되면자동으로입출력된바이트수만큼다음위치로이동함 입력포인터와출력포인터의위치를이동하는방 법 fin.seekg( 위치 _ 바이트단위 ); 방향기준 fin.seekg( 위치 _ 바이트단위, 방향기준 ); ios_base::beg : 파일시작위치 ios_base::cur : 현재위치 fout.seekp( 위치 _ 바이트단위 ); ios_base::end : 마지막 ( 다음 ) 위치 fout.seekp( 위치 _ 바이트단위, 방향기준 ); 15 /18

16 강. 파일입출력임의접근 입력포인터와출력포인터의현재위치를확인하는함수 fin.tellg() fout.tellp() seekg 와 tellg 함수의적용예 16 /18

16 강. 파일입출력임의접근 임의접근의활용 데이터의크기가일정한이진파일에대한활용도가높음 ofstream fout("a.txt", ios_base::out ios_base::binary); for (int i = 1; i <= 10; i++) fout.write((char *) &i, sizeof(int)); 1~10 데이터쓰기 int Num = 100; 5번째데이터로이동 fout.seekp((5-1) * sizeof(int), ios_base::beg); fout.write((char *) &Num, sizeof(int)); fout.close(); 값 100 쓰기 17 /18 ifstream fin("a.txt", ios_base::in ios_base::binary); for (int i = 0; i < 10; i++) fin.read((char *) &Num, sizeof(int)); cout << Num << endl; 값들을읽고확인 fin.close();

16 강. 파일입출력임의접근 구조체데이터에대한임의접근예 Point Po = 1, 1 ; fstream fio("a.txt", ios_base::in ios_base::out ios_base::trunc ios_base::binary); (1, 1) 5개저장 for (int i = 0; i < 5; i++) fio.write((char *) &Po, sizeof(point)); 출력포인터를세번째 데이터로이동 fio.seekp((3-1) * sizeof(point), ios_base::beg); Po.x = 2; Po.y = 2; (2, 2) 로변경 fio.write((char *) &Po, sizeof(point)); 입력포인터를시작위치로이동 fio.seekg(0, ios_base::beg); while (fio.read((char *) &Po, sizeof(point))) 저장된데이터확인 cout << "(" << Po.x << ", " << Po.y << ")" << endl; 18 /18 fio.close();