12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로.

Slides:



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

제12장 표준 입출력과 파일 입출력.
[ 단원 12 ] 파일처리 부산대학교 남 태 우.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express.
-Part3- 제3장 콘솔 입출력과 파일 입출력.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
01 화일의 기본 개념 02 화일 저장장치 03 화일 입출력 제어 04 순차화일 05 화일의 정렬 06 화일의 합병
Chapter 10– 표준 함수(1) Outline 10.1 스트림과 파일 10.2 입출력 표준 함수
Department of Computer Engineering
11장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
제3장 추가 실습 3장 관련 C 언어 프로그래밍 실습.
C 10장. 함수의 활용 #include <stdio.h> int main(void) { int num;
쉽게 풀어쓴 C언어 Express 제18장 입출력과 라이브러리 함수 C Express.
C 11장. 포인터의 활용 #include <stdio.h> int main(void) { int num;
데이터 파일 C 데이터 파일과 스트림(Stream) 텍스트 파일 처리
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
C언어: 배열 (Arrays).
6장. printf와 scanf 함수에 대한 고찰
쉽게 풀어쓴 C언어 Express 제16장 파일 입출력 C Express Slide 1 (of 23)
HW#1 Source 파일 제출 3.20(수)까지 제출 학번_이름_01.c
Part 14 파일 입출력 ©우균, 창병모 ©우균, 창병모.
C언어를 이용한 화일처리.
제15장 파일 입출력 문자열을 출력하는 여러가지 방법 (15-2쪽) 문자열만 처리하는 입출력 함수
쉽게 풀어쓴 C언어 Express 제16장 스트림과 파일 입출력 C Express.
연산자 대입 연산자 산술 연산자 관계 연산자 논리 연산자 비트 연산자 콤마 연산자 축약 연산자 sizeof 연산자
10장 메모리 관리.
쉽게 풀어쓴 C언어 Express 제17장 동적 메모리와 연결 리스트 C Express.
쉽게 풀어쓴 C언어 Express 제17장 동적메모리와 연결리스트 C Express.
동적메모리와 연결리스트 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원 E304호,
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Department of Computer Engineering
C 9장. 구조체 #include <stdio.h> int main(void) { int num;
C 7장. 배열과 문자열 #include <stdio.h> int main(void) { int num;
컴퓨터 프로그래밍 기초 - 2nd : scanf(), printf() 와 연산자 -
7장 배열 배열의 정의 배열의 초기화 1차원 배열 2차원 및 다차원 배열 문자 배열 배열과 구조.
21장. 문자와 문자열 처리 함수.
9장 파일 입출력.
10장 포인터와 문자열 포인터 기본 배열과 포인터 매개변수 전달방법 포인터와 문자열.
처음으로 배우는 C 프로그래밍 제5부 추가적인 화제들 제 11 장 파일 처리.
Part 04 입출력과 전처리 ©우균, 창병모 이 슬라이드는 부산대학교 우균이 작성하였습니다. 오류나 수정할 사항 있으면 연락 주세요.
Chapter 14 이진 데이터 파일과 임의 접근 데이터 파일 C 이진 데이터 파일 임의 접근 파일.
파일 기술자 복사 파일 기술자 복사 : dup(2) 파일 기술자 복사 : dup2(3)
6장 파일 및 레코드 잠금.
Chapter 11 Strings.
Chapter 4. 보조자료 - 파일 입출력 파일의 기본 개념과 특징을 이해한다. 파일 처리 과정을 이해한다.
C언어 프로그래밍의 이해 Ch14. 파일 입출력.
Department of Computer Engineering
14주차.
10장 C 표준 파일 입출력 子曰 學而時習(실습?)之 不亦悅乎.
Chapter 13 Input/Output and Files
17강 파일처리함수(1) 강 의 내 용 파일 입출력의 개념 파일포인터를 이용한 입출력 파일 입출력 과정
18강 파일처리함수(2) 강 의 내 용 순차파일 만들기와 읽기 순차파일 입출력함수 랜덤파일 처리
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
컴퓨터 프로그래밍 기초 - 4th : 수식과 연산자 -
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
조 병 규 Software Quality Lab. 한국교통대학교
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
-Part2- 제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언어 콘서트 제12장 파일 입출력 출처: pixabay.
3b장 구조체와 열거형 구조체의 정의 구조체 변수의 선언 구조체 초기화 및 사용 구조체 재정의 포인터를 이용해서 구조체 사용
⊙ 입출력 처리란? data를 입력장치로부터 program 내부로 읽어 들이거나
Presentation transcript:

12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로

파일처리 순서 파일처리 순서

파일 모드의 종류 02 파일 모드의 종류 mode 의미 읽기/쓰기 위치 "r" 읽기 용도로 파일을 연다 파일 시작 위치 "w" 쓰기 용도로 파일을 연다 "a" 추가 쓰기 용도로 파일을 연다. 파일 끝 위치 "r+" 파일을 갱신하기 위해 파일을 연다. "w+" 파일을 생성하고, 갱신 용도로 파일을 연다. "a+" 추가를 위한 파일의 읽기와 쓰기 용도로 연다.

파일 입출력 함수 03 파일 입출력 함수 구분 함수명 사용 예 열기와 닫기 열기 fopen() fp = fopen("data.txt", "r"); 닫기 fclose() fclose(fp); 입 출력 문자 입출력 fgetc(), fputc() ch = fgetc(fp); 라인 입출력 fgets(), fputs() fgets(str, 80, fp); 블록 입출력 fread(), fwrite() fread(&a, sizeof(a), 1, fp); 형식화된 입출력 fscanf(), fprintf() fscanf(fp, "%d", &a);

【예제 12-1】Ex1.c 02 문자를 파일에 출력 예제 01 #include <stdio.h> 02 #include <stdlib.h> 03 int main(void) 04 { 05       FILE* fp; 06       char ch; 07       if((fp = fopen("basic.txt", "w")) == NULL){ 08               printf("파일이 열리지 않습니다\n"); 09               exit(1); 10       } 11       printf("한 문자를 입력하세요.\n"); 12       ch = getchar(); 13       while(ch != 'q'){ 14               fputc(ch, fp); 15               ch = getchar(); 16       } 17       printf("파일 입력이 종료되었습니다.\n"); 18       return 0; 19 } 표준입력 스트림

문자 입출력 04 문자 입출력 fgetc( ): 파일에서 문자 한 자를 읽어오는 함수 fputc( ): 파일에 문자 한 자를 기록하는 함수 char fgetc( FILE* ) fgetc(char, FILE* ) 사용 예 : 사용 예 : char ch; char ch = 'a'; ch = fgetc(fp); ch = fputc(ch, fp);

라인 입출력 05 라인 입출력 fgets( ) 함수와 fputs( ) 함수: 한 라인을 읽어 배열에 저장하거나 출력하기 위해서 사용되는 함수 fgets( ) 함수: 파일의 한 줄의 내용을 읽어서 배열에 저장하는 함수 fputs( ) 함수: 배열의 내용을 파일에 기록하는 함수 char * fgets (char *, int , FILE *); char * fputs (char *, FILE *); 사용 예 : 사용 예 : FILE *fp; FILE *fp; char line[50]; char line[50] = “title"; fgets(line, 50, fp); fputs(line, fp);

【예제 12-2】Ex2.c 02 라인 입출력 예제 01 #include <stdio.h> 02 #include <stdlib.h> 03 #define LINE 30 04 int main(void) 05 { 06      FILE* fp1, *fp2; 07      char line[LINE]; 08      fp1 = fopen("lineInput.txt", "r"); 09      if (fp1 == NULL) 10      { 11             printf("파일을 열수 없습니다.\n"); 12              exit(1); 13      } 14      fp2 = fopen("linetarget.txt", "w"); 15      while ( fgets(line, LINE, fp1) != NULL) 16              fputs(line, fp2); 17      fclose(fp1); 18      fclose(fp2); 19      return 0; 20}

블록 입출력 06 블록 입출력 일정한 블록의 단위로 입력하여 지정된 곳에 저장하거나 출력하기 위해서 사용 size 함수명 (void* 포인터, 바이트 크기, 블록수, FILE* 포인터); 사용 예 : fread(&a, sizeof(a), 1, fp); fwirte(&b, sizeof(b), 1, fp);

【예제 12-3】Ex3.c 02 블록 입출력 예제 01 #include <stdio.h> 02 #include <stdlib.h> 03 04 int main(void) 05 { 06      FILE* fp; 07     int n = 4000; 08     if((fp = fopen("basic.txt", "wb")) == NULL) 09     { 10             printf("파일을 열수 없습니다.\n"); 11             exit(1); 12     } 13     fwrite(&n, sizeof(int), 1, fp); 14     15     fclose(fp); 16     return 0; 17 } 표준입력 스트림

【예제 12-4】Ex4.c 02 01 #include <stdio.h> 02 #include <stdlib.h> 03 struct students{ 04     char name[40]; 05     char address[40]; 06     int age; 07 }; 08 typedef struct students student; 09 int main(void) 10 { 11     FILE* fp1; 12     student st1 = { "홍길동", "서울", 30}, st2; 13     if((fp1 = fopen("basic.txt", "w")) == NULL) 14     { 15             printf("파일이 열리지 않습니다.\n"); 16             exit(1); 17     } 18     fprintf(fp1, "%s %s %d\n", st1.name, st1.address, st1.age); 19     fclose(fp1); 20     if((fp1 = fopen("basic.txt", "r")) == NULL) 21     { 22             printf("파일이 열리지 않습니다.\n"); 23             exit(1); 24     } 25     fscanf(fp1, "%s %s %d\n", st2.name, st2.address, &st2.age); 26     printf("이름 : %s  거주지 : %s    나이 :  %d\n\n", st2.name, st2.address, st2.age); 27     fclose(fp1); 28    return 0; 29 }

파일 임의 접근 07 파일 임의 접근 fseek( ) 함수 형식 int *fseek(FILE* fp, long offset, int origin) 첫 번째 인자 : 파일 포인터 두 번째 인자 : origin으로부터 파일이 떨어져 바이트 수를 나타냄 세 번째 인자 : 파일 위치를 가리키는 인자로 <stdio.h>에 정의 됨       반환 값 : 성공할 경우 0, 오류 발생시 0이외의 값 하는 일      파일의 위치 지시자를 origin을 기점으로 offset 바이트만큼 이동 상      수 값 의       미 SEEK_SET 파일의 선두 위치 SEEK_CUR 1 파일에서 현재 위치 SEEK_END 2 파일의 끝

【예제 12-5】Ex5.c 02 01 #include <stdio.h> 02 #include <string.h> 03 #include <stdlib.h> 04 int main(void) 05 { 06     FILE* fp; 07     char str[10]; 08     if((fp = fopen("data.txt", "wb")) == NULL) 09     { 10             printf("파일이 열리지 않습니다.\n"); 11            exit(1); 12     } 13     fprintf(fp, "abcdefghij"); 14     fclose(fp); 15     if((fp = fopen("data.txt", "rb")) == NULL) 16     { 17             printf("파일이 열리지 않습니다.\n"); 18             exit(1); 19     } 20     fgets(str, 11, fp); 21      printf("str 문장 출력 : %s \n", str); 22     fseek(fp, 4L, SEEK_SET); 23      fgets(str, 3, fp); 24      printf("4번째부터 2글자 출력 : %s \n", str); 25      fseek(fp, -3L, SEEK_CUR); 26      fgets(str, 3, fp); 27      printf("현재의 위치에서 앞에 3글자부터 2글자 출력 : %s \n", str); 28      fseek(fp, -9L, SEEK_END); 29      fgets(str, 5, fp); 30      printf("맨 뒤에서 9번째 앞에서부터 4글자 출력 : %s \n", str); 31     fclose(fp); 32     return 0; 33 } 표준입력 스트림

파일 임의 접근 07 fgetpos( ) 함수 형식 int *fgetpos(FILE* fp, long* pos); 첫 번째 인자 : 파일 포인터 두 번째 인자 : 파일 위치 지시자 값을 저장하는 포인터      반환 값 : 성공할 경우 0, 오류 발생시 0이외의 값 하는 일      파일 위치 지시자 값을 pos가 가리키는 곳에 넣음 fsetpos( ) 함수 형식 int *fsetpos(FILE* fp, const long* pos); 두 번째 인자 : 파일 위치 지시자의 값을 주는 포인터      pos가 가리키는 값을 파일 위치 지시자 값으로 넣음

【예제 12-6】Ex6.c 02 01 #include <stdio.h> 02 #include <string.h> 03 #include <stdlib.h> 04 int main(void) 05 { 06   07        FILE* fp; 08        fpos_t pos; 09        char str[30]; 10        if((fp = fopen("12-5.c", "rb")) == NULL) 11        { 12                printf("파일이 열리지 않습니다.\n"); 13                exit(1); 14        } 15        fgetpos(fp, &pos); 16        printf("pos = %ld \n", pos); 17        fread(str, sizeof(char), 30, fp); 18        fgetpos(fp, &pos); 19        printf("pos = %ld, str = %s\n", pos, str); 20        pos = 500; 21        if(fsetpos(fp, &pos) != 0) 22                printf("fsetpos 에러 발생\n"); 23        fread(str, sizeof(char), 30, fp); 24        fgetpos(fp, &pos); 25        printf("pos = %ld, str = %.30s \n", pos, str); 26        fclose(fp); 27        return 0; 38 } 표준입력 스트림

매크로 08 매크로 프로그램 작성시 반복적으로 나타나는 명령들을 하나의 새로운 명령으로 정의 할 수 있도록 해주는 것 C 언어에서 매크로 지시어는 #define 으로 나타냄 #define 매크로명 리스트명 수, 문자열 등 사용 예 : #define PI 3.141592 #define MSG "Hello!!"

【예제 12-7】Ex7.c 02 매크로 상수 예제 01 #include <stdio.h> 02 #define PI 3.14 03 int main(void) 04 { 05       int R; 06       float cir; 07 08       printf("원의 반지름을 입력하세요 : "); 09       scanf("%d", &R); 10 11       cir = PI * (2 * R); 12       printf("원의 둘레는 %.2f 입니다.\n", cir); 13       14       return 0; 15 } 표준입력 스트림

【예제 12-8】Ex8.c 02 매크로 함수 예제 01 #include <stdio.h> 02 #define PI  3.14 03 #define AREA(X)  (PI * (X) * (X)) 04 int main(void) 05 { 06       float R; 07       08       printf("원의 반지름을 입력하세요 : "); 09       scanf("%f", &R); 10 11       printf("원의 면적은 %.2f 입니다.\n", AREA(R)); 12       13       return 0; 14 } 표준입력 스트림