Presentation is loading. Please wait.

Presentation is loading. Please wait.

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장 파일처리와 매크로 파일 입출력 함수 문자 입출력 함수 라인 입출력 함수 불록 입출력 함수 매크로."

Similar presentations


Ads by Google