18강 파일처리함수(2) 강 의 내 용 순차파일 만들기와 읽기 순차파일 입출력함수 랜덤파일 처리

Slides:



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

DongSung 옥천동성교회.
데이터의 표현과 연산 (1) (Chapter 3)
제12장 표준 입출력과 파일 입출력.
[ 단원 12 ] 파일처리 부산대학교 남 태 우.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
-Part3- 제3장 콘솔 입출력과 파일 입출력.
프로그래밍실습 제 18 강.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
Chapter 10– 표준 함수(1) Outline 10.1 스트림과 파일 10.2 입출력 표준 함수
Department of Computer Engineering
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
C언어: 배열 (Arrays).
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
조 병 규 Software Quality Lab. 한국교통대학교
Linux System Programming
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Part 14 파일 입출력 ©우균, 창병모 ©우균, 창병모.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
쉽게 풀어쓴 C언어 Express 제16장 스트림과 파일 입출력 C Express.
Chapter 13 문자 데이터와 문자열 문자 데이터 문자열.
7. while 문의 흐름 제어.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Department of Computer Engineering
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
21장. 문자와 문자열 처리 함수.
9장 파일 입출력.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
Part 04 입출력과 전처리 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
파일 기술자 복사 파일 기술자 복사 : 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
4장 제어문 선택문: if 문, if – else 문, switch 문
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
B+Tree프로그램 설치 및 운용 Database Laboratory
Linux Programming Spring 2008
2019년 2월 24일 오후 4시 59분 제2장 표준 입출력 함수
제 9장 입력과 출력 Hello!! C 언어 강성호 김학배 최우영.
Linux/UNIX Programming
Chapter 7 Text Files.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
많은 자료가 있을 때는 배열을 사용한다. 아래는 배열을 사용하는 경우의 예시이다. 상황에 따라 1차원 또는 다차원 배열 필요.
문자열과 배열 문자열 입출력 문자열 처리 함수 문자 처리 함수 문자열의 배열
조 병 규 Software Quality Lab. 한국교통대학교
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
2 배열과 구조.
파일 입출력.
Homework #7 (1/4) 다음 프로그램을 작성하고, 프로그램과 실행 결과를 함께 제출한다.
구조체(struct)와 공용체(union)
컴퓨터 프로그래밍 기초 #13 : 문자열 Seong-Yun Choi
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
9주차: Using Files and Others
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
Chapter 09. 배열.
개정판 누구나 즐기는 C언어 콘서트 제12장 파일 입출력 출처: pixabay.
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

18강 파일처리함수(2) 강 의 내 용 1 2 3 4 순차파일 만들기와 읽기 순차파일 입출력함수 랜덤파일 처리 강 의 내 용 1 순차파일 만들기와 읽기 2 순차파일 입출력함수 3 랜덤파일 처리 4 랜덤파일 만들기와 읽기

putc() fputc() fputs() fprintf() 순차파일 만들기 순차파일 출력함수 디스크에 만들어진 파일에 자료를 기록하는 함수 putc() fputc() fputs() fprintf() getc() fgetc() fgets() fscanf() 순차파일 입력함수

순차파일 출력함수 putc() 함수 - 문자 단위의 파일 출력함수 - fputc() 함수와 유사 사용 예 : putc(c, fp); 기능 : fp가 가리키는 파일에 변수c에 있는 문자를 출력

putc() 함수의 사용 예 #include <stdio.h> #include <stdlib.h> KOREA SEOUL JONGRO-GU DONGSUNG-DONG Korea National Open University ^Z Enter #include <stdio.h> #include <stdlib.h> void main(){ FILE *fp; char c; fp=fopen("sample1.dat", "w"); if(fp==NULL) { printf("파일을 개방할 수 없습니다!"); exit(1); } while((c = getchar()) != EOF) putc (c, fp); fclose(fp); 파일 포인터 선언 파일을 텍스트 파일, 쓰기 모드로 개방 자료의 끝을 의미하므로 위의 내용이 들어 있는 sample.dat파일이 만들어짐 파일 개방 에러체크 에러 메시지 출력 프로그램을 끝냄 문자 출력의 끝을 판별 파일 닫기 문자를 파일로 출력

순차파일 출력함수 fputs() 함수 - 문자열을 파일로 출력할 때 사용 형식 : fputs(문자열변수, 파일포인터 변수); 사용 예 : fputs(s, fp) 기능 : 지정된 파일에 문자열(하나의 레코드) 을 출력

fputs() 함수의 사용 예 # include <stdio.h> # include <stdlib.h> # include <sting.h> void main() { char name[64]; FILE *fp; if((fp=fopen("sample2.dat", "w"))==NULL){ puts("파일을 개방할 수 없습니다!"); exit(1); } gets(name); while(strcmp(name, "end" )){ strcat(name, "\n"); fputs(name, fp); fclose(fp); KIM HG PARK SY KIM HS CHOI DS LEE SY end Enter sample2.dat라는 파일이 만들어짐 sample2.dat라는 파일을 쓰기 모드로 개방하고, 에러 발생 시 메시지 출력 입력된 문자열이 end가 아닐동안 loop 계속( strcmp(): 2개의 문자열을 비교하는 문자열 조작함수) 문자열을 입력받음 하나의 문자열에 다른 것 (“\n”)을 추가 하는 문자열 조작함수 문자열을 fp가 가리키는 파일에 출력 파일 닫음

fprintf() 함수 fprintf() 함수 - 지정된 형식을 가지고 파일에 자료를 출력 - 여러 항목의 복합적인 자료로 구성된 레코드를 저장할 때 유용 형식: fprintf(파일포인터 변수, “출력형식”, 변수); 사용 예: fprintf(fp, “%s %d”, a, b); 기능: 지정된 형식대로 자료를 파일포인터 변수가 가리키는 곳에 출력

fprintf() 함수의 사용 예 #include <stdio.h> #include <stdlib.h> 학번 이름 중간 기말 레포트 출석 점수를 입력 97001 KIM_HG 29 28 30 10 97002 PARK_SY 20 20 25 10 97003 LEE_SY 25 20 20 10 97004 CHOI_DS 23 25 26 10 97005 KIM_HS 28 23 25 10 Enter #include <stdio.h> #include <stdlib.h> void main(){ FILE *fp; char no[10], name[10]; int mid, term, rep, att, i; fp=fopen("sample3.dat", "w"); if(fp==NULL){ printf("파일을 개방할 수 없습니다!"); exit(1); } sample3.dat 파일이 만들어짐 fprintf(stdout, "학번 이름 중간 기말 레포트 출석 점수를 입력\n"); for(i=0;i<5;++i) { scanf("%s %s %d %d %d %d", no, name, &mid, &term, &rep, &att); fprintf(fp, "%10s %8s %3d %3d %3d %3d\n", no, name, mid, term, rep, att); } fclose(fp); "stdout"-모니터를 가리키는 특수한 파일 포인터이다.(“stdin”-키보드) 지정된 출력 형식으로 자료를 파일에 출력

getc() fgetc() fgets() fscanf() 순차파일 읽기 순차파일 입력함수 파일 출력함수에 의해 만들어진 순차파일의 저장된 자료를 읽어 내는 함수 파일의 끝에 있는 EOF 신호를 만날 때까지 읽을 수 있는 프로그램 작성 getc() fgetc() fgets() fscanf()

순차파일 입력함수 getc() 함수 - 문자 단위의 파일 입력함수 - fgetc() 함수와 유사 사용 예 : c=getc(fp); 기능 : 지정된 파일로부터 한 문자를 읽어온다

getc() 함수에 의해 한 문자씩 읽어 와 c에 전달 KOREA SEOUL JONGRO-GU DONGSUNG-DONG Korea National Open University #include <stdio.h> #include <stdlib.h> void main(){ FILE *fp; char c; fp=fopen("sample1.dat", "r"); if(fp==NULL){ printf("파일을 개방할 수 없습니다!"); exit(1); } while((c=getc(fp)) != EOF) putchar(c); fclose(fp); sample1.dat 파일을 읽기 모드로 개방 getc() 함수에 의해 한 문자씩 읽어 와 c에 전달

순차파일 입력함수 fgets() 함수 - 파일에 저장된 문자열 자료를 읽을 때 사용 - 읽어 낼 문자열의 길이를 반드시 명시 사용 예 : fgets(s, 40, fp); 기능 : 지정된 파일로부터 해당 문자열 길이 만큼의 문자를 읽어와 문자열 변수에 저장한다.

fgets() 함수의 사용 예 #include <stdio.h> #include <stdlib.h> KIM HG PARK SY KIM HS CHOI DS LEE SY #include <stdio.h> #include <stdlib.h> void main(){ char name[20]; FILE *fp; if((fp=fopen("sample2.dat", "r"))==NULL) { puts("파일을 개방할 수 없습니다!"); exit(1); } while((fgets(name, 20, fp)!= NULL)) printf("%s", name); fclose(fp); sample2.dat라는 파일을 읽기 모드로 개방하고, 에러 발생 시 메시지 출력 파일의 끝에 도달할 때까지 읽기를 계속 레코드의 끝에 CR/LF신호가 저장되어 있으므로 개행문자 '\n'을 넣지 않아도 됨

순차파일 입력함수 fscanf() 함수 - 일반적으로 파일의 끝을 판별하는 feof() 함수와 - 숫자, 문자 등 복합적인 자료로 구성된 레코드를 읽을 때 사용 - 일반적으로 파일의 끝을 판별하는 feof() 함수와 같이 사용 형식 : fscanf(파일포인터 변수, “입력형식”, 변수); 사용 예 : fscanf(fp, “%s %d”, &a, &b); 기능 : 파일 포인터가 가리키는 곳으로부터 지정된 형식대로 자료를 읽어 온다..

fscanf() 함수의 사용 예 #include <stdio.h> #include <stdlib.h> 학번 이름 중간 기말 리포트 출석 97001 KIM_HG 29 28 30 10 97002 PARK_SY 20 20 25 10 97003 LEE_SY 25 20 20 10 97004 CHOI_DS 23 25 26 10 97005 KIM_HS 28 23 25 10 #include <stdio.h> #include <stdlib.h> void main(){ FILE *fp; char no[10], name[10]; int mid, term, rep, att, i; fp=fopen("sample3.dat", "r"); if(fp==NULL) printf("파일을 개방할 수 없습니다!"); exit(1); } 파일의 끝을 검사하기 위해 feof()함수가 사용되며, 0인 동안 loop계속 printf("학번 이름 중간 기말 리포트 출석 \n"); while(!feof(fp)) fscanf(fp, "%10s %8s %3d %3d %3d %3d\n", no, name, &mid, &term, &rep, &att); printf("%-10s %-8s %4d %4d %4d %4d", no, name, mid, term, rep, att); } fclose(fp); 파일에 저장된 자료의 형식에 맞게 입력형식을 지정해야 함 화면에 출력하기 위해 출력 형식을 지정

순차파일의 레코드 추가 레코드 추가를 위한 사용 모드 a a+ ab ab+ 형식 : fp=fopen(“파일명”, “a”); 사용 예 : fp=fopen(“sample.dat”, “a”); 기능 : 이미 만들어진 순차파일의 끝에 새로운 레코드 추가(append)

레코드 추가의 사용 예 #include <stdio.h> void main() { FILE *fp; fp=fopen("sample4.dat", "a"); fputs("Cho DS\n", fp); fputs("Han JK\n", fp); fputs("Kang MH\n", fp); fclose(fp); } sample4.dat 파일이 없으므로sample4.dat 파일을 생성하고 세 개의 이름을 기록하게 된다 sample4.dat에 레코드 추가 모드로 파일 개방 추가할 문자열을 파일에 쓴다

랜덤파일 처리 파일의 임의의 위치에서 자료를 읽거나 쓸 수 있다 레코드의 길이가 일정 단점 : 기억공간 낭비 순차파일에 비해 단점 : 기억공간 낭비 장점 : 레코드 검색이 빠르고 효과적

랜덤파일 열기 fopen("파일 이름", "wb") fopen("파일 이름", "rb") 2진 모드의 특징 텍스트 파일보다 적은 기억공간 레코드의 길이를 프로그래머가 결정 파일 포인터의 위치 변경 가능