-Part3- 제3장 콘솔 입출력과 파일 입출력.

Slides:



Advertisements
Similar presentations
C 프로그래밍 기초.
Advertisements

2007 1학기 12 배열.
제12장 표준 입출력과 파일 입출력.
[ 단원 12 ] 파일처리 부산대학교 남 태 우.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
프로그래밍실습 제 18 강.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
01 화일의 기본 개념 02 화일 저장장치 03 화일 입출력 제어 04 순차화일 05 화일의 정렬 06 화일의 합병
Chapter 10– 표준 함수(1) Outline 10.1 스트림과 파일 10.2 입출력 표준 함수
Department of Computer Engineering
C 프로그래밍 - 기본 비트 캠프.
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
C언어: 배열 (Arrays).
버퍼 오버플로우에 대한 대책과 발전된 공격 안전한 함수 사용 버퍼 오버플로우에 취약한 함수 사용하지 않기
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Part 14 파일 입출력 ©우균, 창병모 ©우균, 창병모.
쉽게 풀어쓴 C언어 Express 제16장 스트림과 파일 입출력 C Express.
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
Using Standard I/O on Sockets
Department of Computer Engineering
21장. 문자와 문자열 처리 함수.
9장 파일 입출력.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
변수와 자료형.
Part 04 입출력과 전처리 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
Chapter 14 이진 데이터 파일과 임의 접근 데이터 파일 C 이진 데이터 파일 임의 접근 파일.
파일 기술자 복사 파일 기술자 복사 : dup(2) 파일 기술자 복사 : dup2(3)
12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.
Chapter 11 Strings.
Chapter 4. 보조자료 - 파일 입출력 파일의 기본 개념과 특징을 이해한다. 파일 처리 과정을 이해한다.
C언어 프로그래밍의 이해 Ch14. 파일 입출력.
11 표준 입출력과 파일 입출력 데이터를 읽고 쓰는 다양한 방법 익히기!.
Department of Computer Engineering
14주차.
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Chapter 13 Input/Output and Files
9장 파일 입출력.
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
18강 파일처리함수(2) 강 의 내 용 순차파일 만들기와 읽기 순차파일 입출력함수 랜덤파일 처리
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
Linux Programming Spring 2008
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
제 9장 입력과 출력 Hello!! C 언어 강성호 김학배 최우영.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
11장. 1차원 배열 IT응용시스템공학과 김 형 진 교수.
24장. 파일 입출력.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
조 병 규 Software Quality Lab. 한국교통대학교
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
-Part2- 제1장 1차원 배열이란 무엇인가.
파일 입출력.
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
구조체(struct)와 공용체(union)
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
9주차: Using Files and Others
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
C.
printf("Global Korea\n");
2019 1학기 응용프로그래밍 - 파일 처리 01 파일 열기 02 파일 저장과 내용 읽기 03 이진파일 처리 04 임의접근 파일 처리 05 파일 관련 함수들.
3장 파일 다루기 한빛미디어(주).
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
11장. 1차원 배열.
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

-Part3- 제3장 콘솔 입출력과 파일 입출력

학습목차 3.1 스트림이란 3.2 콘솔 입출력 3.3 파일 입출력 3.4 표준 파일 입출력 함수

3.1 스트림이란

3.1 스트림이란 배울 내용 ① 스트림 ② 버퍼와 버퍼링

3.1 스트림이란 (1/5) 스트림(Stream) 데이터를 입력하고 출력하기 위한 다리 키보드로 데이터를 입력  표준 입력 스트림 모니터로 데이터를 출력  표준 출력 스트림 키보드 프로그램 모니터 표준 입력 스트림 표준 출력 스트림

3.1 스트림이란 (2/5) 표준 입출력 스트림 표준 입출력 스트림의 생성과 소멸 생성 : 프로그램 시작 시 소멸 : 프로그램 종료 시 스트림 설명 장치 stdin 표준 입력을 담당 키보드 stdout 표준 출력을 담당 모니터 stderr 표준 에러을 담당

3.1 스트림이란 (3/5) 표준 입출력 스트림 파일 입출력 스트림

3.1 스트림이란 배울 내용 ① 스트림 ② 버퍼와 버퍼링

3.1 스트림이란 (4/5) 버퍼(Buffer) 처리할 데이터를 임시로 저장하는 장소 입력 버퍼 : 입력 데이터를 저장하기 위한 버퍼 출력 버퍼 : 출력 데이터를 저장하기 위한 버퍼

3.1 스트림이란 (5/5) 버퍼링 버퍼를 채우는 동작 버퍼링을 하는 이유 성능 향상을 위해… 문자를 개별 처리하는 것보다 문자들을 모아 일괄 처리하는 것이 효율적

3.2 콘솔 입출력

3.2 콘솔 입출력 배울 내용 ① 콘솔 표준 입출력 함수 ② 콘솔 비표준 입출력 함수

3.2 콘솔 입출력 (1/4) 콘솔 입출력 함수의 종류 헤더파일 : stdio.h 함수의 원형 기능 헤더파일 int getchar (void); 키보드로 부터 한 문자를 입력 받는다. stdio.h int putchar (int c); 모니터에 한 문자를 출력한다. char* gets (char *s); 키보드로 부터 문자열을 입력 받는다. int puts (char* str); 모니터에 문자열을 출력한다. int scanf (const char* format, …); 키보드로 부터 데이터를 서식에 맞춰 출력한다. int printf (const char* format, …); 모니터에 데이터를

3.2 콘솔 입출력 (2/4) getchar( ) 함수 putchar( ) 함수 EOF(End Of File) 문자를 입력하는 함수 호출이 실패했을 때 EOF 반환 일일이 EOF 반환 여부를 검사할 필요는 없음 putchar( ) 함수 문자를 출력하는 함수 EOF(End Of File) 파일의 끝을 의미 stdio.h 에 -1로 매크로 상수 정의 [ctr+z]를 입력하면 EOF로 인식

3.2 콘솔 입출력 (3/4)---[3-1.c 실습] #include<stdio.h> int main(void) { char ch=0; while( ch != EOF) // EOF == -1 ch=getchar(); putchar(ch); }   return 0;

3.2 콘솔 입출력 배울 내용 ① 콘솔 표준 입출력 함수 ② 콘솔 비표준 입출력 함수

3.2 콘솔 입출력 (4/4) 콘솔 비표준 입출력 함수 헤더파일 : conio.h ‘버퍼를 사용하지 않는다.’ 데이터를 일괄해서 처리하는 경우에는 비효율적 함수의 원형 기능 헤더파일 int getch (void); 키보드로 부터 한 문자를 입력 받는다. (입력 화면에 입력 문자가 보이지 않는다.) conio.h int getche (int c); (입력 화면에 입력 문자가 보인다.) int putch (int c); 모니터에 한 문자를 출력한다. int kbhit (void); 키보드상에 있는 키가 눌려졌는지를 조사한다. (누른 경우 0이 아닌 수를 반환)

3.3 파일 입출력 -교재 584페이지 -

3.3 파일 입출력 배울 내용 ① 파일 입출력의 필요성 ② 파일을 이용한 입출력 과정 ③ fopen( ) 함수와 fclose( ) 함수

3.3 파일 입출력 (1/11) 파일 입출력의 필요성 ‘실행 중에 데이터가 생성되면 데이터는 메모리에 보관 된다.’ 문제점 : 프로그램이 종료되면 사라짐 데이터를 프로그램이 종료된 후에도 계속해서 사용하려면? 파일에 저장 ‘중요한 데이터를 파일에 저장한다.’ ‘필요할 때 파일을 읽어 데이터를 사용한다.’

3.3 파일 입출력 (2/11) 파일의 유형 텍스트 파일(Text File) 데이터 내용을 확인할 수 있는 문자들을 저장해놓은 파일 문자열과 같은 텍스트 기반의 데이터 파일 예) *.txt, *c, *.hwp, *.doc 바이너리 파일(Binary File) 일반 문서 편집기에서 내용을 확인 할 수 없음 이진 형식으로 인코딩된 데이터 파일 바이너리 파일을 텍스트 모드로 열면 글자가 깨지는 현상이 발생 예) *.obj, .exe, *.lib, *.dll

3.3 파일 입출력 배울 내용 ① 파일 입출력의 필요성 ② 파일을 이용한 입출력 과정 ③ fopen( ) 함수와 fclose( ) 함수

3.3 파일 입출력 (3/11) 파일 입출력 과정 Step1. 파일 스트림을 생성한다 파일 포인터 생성 fopen() 함수 사용 Step3. 파일의 입출력을 수행한다 fgetc(),fputc,fgets(),fputs(),fscanf(), fprintf(),fread(),fwrite(),fseek(),ftell() 등의 함수 사용 Step4. 파일을 닫는다 fclose() 함수 사용

3.3 파일 입출력 배울 내용 ① 파일 입출력의 필요성 ② 파일을 이용한 입출력 과정 ③ fopen( ) 함수와 fclose( ) 함수

3.3 파일 입출력 (4/11) fopen()함수와 fclose()함수 헤더파일: stdio.h 함수의 원형 설명 #include<stdio.h> FILE* fopen (const char* filename, const char* mode); 파일 스트림을 생성하고 파일을 연다. 호출 실패의 경우: NULL 반환 함수의 원형 기능 #include<stdio.h> int fclose (FILE* stream); 파일을 닫는다. 호출 실패의 경우: EOF 반환

3.3 파일 입출력 (5/11) 파일 스트림 fopen( )의 인자 ‘FILE* 구조체 포인터’를 이용 예) FILE* stream; fopen( )의 인자 첫 번째 인자: filename 파일의 경로와 이름을 동시에 표현 두 번째 인자: mode 파일의 접근 모드 와 파일 입출력 모드 표현

3.3 파일 입출력 (6/11) 파일의 접근 모드 (r, w, a, r+, w+, a+) r w a r+ w+ a+ 모드 설명 읽기 전용으로 파일을 연다. 파일이 없거나 찾을 수 없는 경우에 호출 실패 w 쓰기 전용으로 파일을 연다. 지정한 파일명이 있는 경우: 파일 내용을 모두 지우고 새로 만든다. 지정한 파일명이 없는 경우: 새로운 파일을 생성 한다. a 추가 쓰기 전용으로 파일을 열다. 지정한 파일이 있으면 파일의 끝에서부터 내용을 추가합니다. r+ 파일을 읽고 쓰기 위해 연다. 지정한 파일이 있는 경우: 기존의 내용을 덮어쓴다. 지정한 파일이 없는 경우: 새로운 파일을 생성해서 데이터를 쓴다. w+ 지정한 파일이 있는 경우: 파일의 내용을 모두 지우고 새 파일을 만든다.- 지정한 파일이 없는 경우: 새로운 파일을 생성 한다. a+ 파일을 읽고 추가 쓰기 위해 연다. 지정한 파일이 있으면 파일의 끝에서부터 내용을 추가한다. 나 나머지 기능은 r+와 같다.

3.3 파일 입출력 (7/11) 파일 입출력 모드 t b text 모드 binary 모드 모드 설명 텍스트 파일 모드 바이너리 파일 모드

3.3 파일 입출력 (8/11) r : 읽기 (read) w: 쓰기 (write) a: 추가 (append) 파일 접근 모드 텍스트/바이너리 모드 파일 오픈 모드 r : 읽기 (read) w: 쓰기 (write) a: 추가 (append) t : 텍스트 파일 모드(text file mode) b: 바이너리 파일 모드 (binary file mode)

3.3 파일 입출력 (9/11) /* case 1 */ FILE* stream; stream=fopen("d:\\project\\data.txt", "rt");   /* case 2 */ FILE* stream stream=fopen("data.txt", "rt"); /* case 3 */ stream=fopen("d:\\project\\data.txt", “r"); /* case 4 */ stream=fopen("d:\\project\\data.txt", “w"); /* case 5 */ stream=fopen("d:\\project\\data.txt", “ab"); 텍스트 모드의 경우 ‘t’ 생략 가능

3.3 파일 입출력 (10/11)---[3-3.c 실습] #include<stdio.h> int main(void) { FILE* stream; // 파일 스트림 생성을 위한 FILE 포인터 선언 int file_state; // 파일의 종료를 위한 상태 체크 변수 선언   // 파일 스트림 생성과 파일 열기 stream = fopen("data1.txt","w"); if (stream == NULL) printf("파일 열기 에러\n"); // 파일 닫기(파일 스트림 소멸) file_state = fclose(stream); if (file_state == EOF) puts("파일 닫기 에러"); return 0; }

3.3 파일 입출력 (11/11)---[3-3.c 분석] #include<stdio.h> int main(void) { FILE* stream; stream = fopen("data1.txt","w"); fclose(stream); return 0; }

3.4 표준 파일 입출력 함수 -교재 592페이지 -

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (1/27) 대표적인 표준 입출력 함수와 표준 파일 입출력 함수 stream을 입력하는 함수인 경우- stdin 또는 stdout 선택적 사용 가능 표준 입출력 함수 표준파일 입출력 함수 기능 int getchar (void); int fgetc (FILE* stream); 문자 단위 입력 int putchar (int c); int fputc (int c, FILE* stream); 출력 char* gets (char *s); char* fgets (char *s, int n, FILE* stream); 문자열 단위 int puts (char* str); int fputs (const char* s, FILE* stream); int scanf (const char* format, …); int fscanf (FILE* stream, const char* format, …); 자료형에 맞춘 int printf (const char* format, …); int fprintf (FILE* stream, const char* format, …); stdin stdout stdin stdout

3.4 표준 파일 입출력 함수 (2/27) 표준 파일 입출력 함수의 선택 적용 Case 1 - 파일(stream) 입력  파일(stream) 출력 Case 2 - 파일(stream) 입력  모니터(stdout) 출력 Case 3 - 키보드(stdin) 입력  파일(stream) 출력 Case 4 - 키보드(stdin) 입력  모니터(stdout) 출력

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (3/27) 헤더파일 : stdio.h 함수의 원형 설명 int fgetc (FILE* stream); 키보드/파일로 부터 한 문자를 입력 받는다. 파일의 끝에 도달 할 경우: EOF 반환 int fputc (int c, FILE* stream); 모니터/파일에 한 문자를 출력한다. 호출 실패의 경우: EOF 반환

3.4 표준 파일 입출력 함수 (4/27)---[3-4.c 실습] #include <stdio.h> int main(void) { FILE* stream; int file_state; int input=0; stream=fopen("data1.txt", "w"); if(stream==NULL) puts("파일 열기 에러"); puts("데이터입력"); while(input != EOF) input=fgetc(stdin); fputc(input, stream); } file_state=fclose(stream); if(file_state==EOF) puts("파일 닫기 에러"); return 0;

3.4 표준 파일 입출력 함수 (5/27)---[3-5.c 실습] #include<stdio.h> int main(void) { FILE* stream1; // 읽기 전용 파일 스트림 선언 FILE* stream2; // 쓰기 전용 파일 스트림 선언 int input=0;   stream1 = fopen("data1.txt","r"); stream2 = fopen("data2.txt","w"); puts("파일로부터 데이터를 입력"); while( input != EOF ) input = fgetc(stream1); fputc(input, stream2); fputc(input, stdout); } fclose(stream1); fclose(stream2); return 0;

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (6/27) 헤더파일 : stdio.h 함수의 원형 설명 char* fgets (char* s, int n, FILE* stream); 키보드/파일로 부터 문자열을 입력 받는다. 파일의 끝에 도달 할 경우: NULL 포인터 반환 int fputs (const char* s, FILE* stream); 모니터/파일에 문자열을 출력한다. 호출 실패의 경우: EOF 반환

3.4 표준 파일 입출력 함수 (7/27)---[3-6.c 실습] #include<stdio.h> #define MAX 100   int main(void) { FILE* stream; char buffer[50]; stream = fopen("data3.txt","w"); if(stream == NULL) puts("파일 열기 오류"); fgets(buffer,sizeof(buffer),stdin); fputs(buffer,stream); fclose(stream); return 0; }

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (8/27) 자료형 단위의 표준 입출력 함수 fscanf(), fprintf() 헤더파일 : stdio.h 함수의 원형 설명 int fscanf (FILE* stream, const char* format, …); 키보드/파일로 부터 자료형에 맞춰 데이터를 입력한다. (텍스트 데이터와 바이너리 데이터를 동시 입력) 파일의 끝에 도달한 경우: EOF 반환 int fprintf (FILE* stream, const char* format, …); 모니터/파일에 자료형에 맞춰 데이터를 출력한다. (텍스트 데이터와 바이너리 데이터를 동시 출력)

3.4 표준 파일 입출력 함수 (9/27)---[3-7.c 실습] #include<stdio.h> int main(void) { FILE* stream; char name[20]; int kor, eng, total;   printf("1. 이름입력: "); fscanf(stdin,"%s",name); // 키보드로부터 데이터를 입력 printf("2. 국어점수, 영어점수입력: "); fscanf(stdin,"%d %d",&kor, &eng); // 키보드로부터 데이터를 입력 total = kor + eng; stream = fopen("data4.txt","w"); fprintf(stream,"%s %d %d %d \n", name, kor, eng, total); //data4.txt에 출력 //fprintf(stdout,"%s %d %d %d \n", name, kor, eng, total); // 모니터에 출력 fclose(stream); return 0; }

3.4 표준 파일 입출력 함수 (10/27)---[3-8.c 실습(1/2)] #include<stdio.h> int main(void) { FILE* stream1; FILE* stream2;   char name[10]=""; int kor=0, eng=0, total=0; stream1 = fopen("data4.txt","r"); stream2 = fopen("data5.txt","w"); fscanf(stream1,"%s %d %d %d \n", name, &kor, &eng, &total); fprintf(stream2,"%s %d %d %d \n", name, kor, eng, total); // fprintf(stdout, "%s %d %d %d \n", name, kor, eng, total); fclose(stream1); fclose(stream2); return 0; }

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (11/27) feof( ) 함수를 사용하는 이유 파일의 끝을 확인하는 다양한 표현 단점 ‘파일 끝에서 반환되는 값을 일일이 기억하는 것이 불편하다.’ 단점 해결 feof()함수를 사용하자!!! 함수 파일의 끝에서 반환하는 값 fgetc( ) EOF(-1) fgets( ) NULL(0) fscanf( )

3.4 표준 파일 입출력 함수 (12/27) 파일의 끝을 검사하는 feof()함수 헤더파일 : stdio.h 함수 원형 설명 int feof(FILE* stream); 파일의 끝에 도달했는지 아닌지를 검사 파일의 끝에 도달 : 0이 아닌 값 반환 파일의 끝에 도달하지 못한 경우 : 0 반환

3.4 표준 파일 입출력 함수 (13/27)---[3-9.c 실습] #include<stdio.h> int main(void) { FILE* stream1; FILE* stream2; char buffer[50]; stream1 = fopen("data1.txt","r"); stream2 = fopen("data2.txt","w");   while( !feof(stream1) ) fgets(buffer,sizeof(buffer),stream1); fputs(buffer,stream2); } fclose(stream1); fclose(stream2); return 0;

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (14/27) 버퍼를 비우는 함수 fflush()함수 헤더파일 : stdio.h 함수 원형 설명 int fflush(FILE* stream); 버퍼를 비움 실패 : EOF 반환

3.4 표준 파일 입출력 함수 (15/27)---[3-10.c 실습] #include<stdio.h> int main(void) { int age; char name[20]; printf("나이입력: "); scanf("%d",&age);   //fflush(stdin); // 입력 버퍼를비운다. printf("이름을 입력: "); fgets(name, sizeof(name), stdin); printf("%d\n",age); printf("%s\n",name); return 0; }

3.4 표준 파일 입출력 함수 (16/27)---[3-10.c 분석] 문제가 생기는 이유 문제점 해결 fflush(stdin)의 주석을 제거하면 정상적으로 출력

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (17/27) 바이너리 파일 입출력을 지원하는 함수 fwrite()함수 헤더파일 : stdio.h ① ② ③ ④ ① buffer: 출력 데이터를 저장한 버퍼를 가리키는 포인터 ② size: 한번에 출력할 데이터의 바이트 크기 ③ count: 반복 횟수 ④ stream: 파일 출력 스트림

3.4 표준 파일 입출력 함수 (18/27) 바이너리 파일 입출력을 지원하는 함수 fread()함수 헤더파일 : stdio.h ① buffer가 void*(void형 포인터)인 이유 어떤 유형의 buffer를 사용할지 자유롭게 선택 ① ② ③ ④ ① buffer: 파일로 부터 입력 받은 데이터를 저장하는 버퍼를 가리키는 포인터 ② size: 한번에 입력 받을 데이터의 바이트 크기 ③ count: 입력 횟수 ④ stream: 파일 입력 스트림

3.4 표준 파일 입출력 함수 (19/27)---[3-11.c 실습] #include<stdio.h> int main(void) { int buffer1[5] = {0xff, 0x56, 0x78, 0xfa, 0xf1}; int buffer2[5];   FILE* stream; stream = fopen("student.dat","wb"); // 바이너리 모드, 쓰기 모드 fwrite(buffer1,sizeof(int),5,stream); fclose(stream); stream = fopen("student.dat","rb"); // 바이너리 모드, 읽기 모드 fread(buffer2,sizeof(int),5,stream); printf("%x %x %x %x %x \n", buffer2[0], buffer2[1], buffer2[2], buffer2[3], buffer2[4]);   return 0; }

3.4 표준 파일 입출력 함수 배울 내용 ① 대표적인 표준 파일 입출력 함수 ② fgetc( ) 함수와 fputc( ) 함수 ③ fgets( ) 함수와 fputs( ) 함수 ④ fprintf( ) 함수와 fscanf( ) 함수 ⑤ feof( ) 함수 ⑥ fflush( ) 함수 ⑦ fread( ) 함수와 fwrite( ) 함수 ⑧ fseek( ) 함수와 ftell( ) 함수

3.4 표준 파일 입출력 함수 (20/27) 랜덤 접근 함수 fseek()함수 헤더파일 : stdio.h 세 번째 인자 start 함수 원형 설명 int fseek(FILE* stream, long offset, int start); start부터 offset까지 스트림을 이동시킨다. 성공 : 0 반환 실패 : 0이 아닌 값 반환 기호 상수 값 설명 SEEK_SET 파일의 시작 위치 SEEK_CUR 1 파일의 현재 위치 SEEK_END 2 파일의 끝 위치

3.4 표준 파일 입출력 함수 (21/27)---[3-13.c 실습] #include <stdio.h> int main(void) { FILE* stream; stream=fopen("seek.txt", "w"); // 쓰기 모드 fputs("ABCDEFGHIJ", stream); fclose(stream); stream=fopen("seek.txt", "r"); // 읽기 모드 fseek(stream, 0, SEEK_SET); fprintf(stdout, "%c \n", fgetc(stream)); // A 출력 fseek(stream, 2, SEEK_SET); fprintf(stdout, "%c \n", fgetc(stream)); // C 출력 fseek(stream, -1, SEEK_END); fprintf(stdout, "%c \n", fgetc(stream)); // J 출력 fseek(stream, -2, SEEK_CUR); fprintf(stdout, "%c \n", fgetc(stream)); // I 출력 return 0; }

3.4 표준 파일 입출력 함수 (22/27) fseek(stream, 0, SEEK_SET);

3.4 표준 파일 입출력 함수 (23/27) fseek(stream, -1, SEEK_END); SEEK_CUR의 위치

3.4 표준 파일 입출력 함수 (24/27) fseek(stream, -2, SEEK_CUR);

3.4 표준 파일 입출력 함수 (25/27) 랜덤 접근 함수 ftell()함수 현재의 파일 위치가 파일의 시작부터 얼마나 떨어져 있는지를 확인 헤더파일 : stdio.h 함수 원형 설명 long ftell(FILE* stream); 파일 포인터 stream의 위치를 확인 성공 : 파일 포인터의 위치 반환 실패 : EOF 반환

3.4 표준 파일 입출력 함수 (26/27)---[3-14.c 실습] #include <stdio.h> int main(void) { FILE* stream; long distance; stream=fopen("ftell.txt", "w"); // 쓰기모드 fputs("ABCDEFGHIJ", stream); fclose(stream); stream=fopen("ftell.txt", "r"); // 읽기모드 fseek(stream, -8, SEEK_END); fprintf(stdout, "%c \n", fgetc(stream)); // C 출력 distance=ftell(stream); printf("거리: %ld \n", distance); // 거리3 return 0; }

3.4 표준 파일 입출력 함수 (27/27)---[3-15.c 실습] #include<stdio.h> int main(void) { FILE* stream = fopen("ftell.txt", "rb"); fseek(stream, 0, SEEK_END); printf("ftell.txt 파일의 크기 : %d 바이트\n", ftell(stream)); fclose(stream);   return 0; }

공부한 내용 떠올리기 스트림, 버퍼, 버퍼링이 무엇인지 콘솔 표준 입출력 함수와 콘솔 비표준 입출력 함수 파일을 이용한 입출력 과정 표준 파일 입출력 함수