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

Similar presentations


Presentation on theme: "12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로."— Presentation transcript:

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

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

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

4 파일 입출력 함수 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);

5 【예제 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 } 표준입력 스트림

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

7 라인 입출력 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);

8 【예제 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}

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

10 【예제 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 } 표준입력 스트림

11 【예제 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 }

12 파일 임의 접근 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 파일의 끝

13 【예제 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 } 표준입력 스트림

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

15 【예제 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 } 표준입력 스트림

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

17 【예제 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 } 표준입력 스트림

18 【예제 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 } 표준입력 스트림


Download ppt "12장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로."
Ads by Google