반응형
버퍼 기반 입출력
- 버퍼 기반 입출력 함수 : fread(3)
- 항목의 크기가 size인 데이터를 nitems에 지정한 갯수만큼 읽어 ptr에 저장
- 성공하면 읽어온 항목 수를 리턴
- 읽을 항목이 없으면 0을 리턴
- 버퍼 기반 출력함수 : fwrite(3)
- 항목의 크기가 size인 데이터를 items에서 지정한 개수만큼 ptr에서 읽어서 stream으로 지정한 파일에 출력
- 성공하면 출력한 항목의 수를 리턴
- 오류가 발생하면 EOF를 리턴
버퍼 기반 입출력 예시
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <stdlib.h> #include <stdio.h> int main(void) { FILE *rfp; char buf[BUFSIZ]; int n; if ((rfp = fopen("unix.txt", "r")) == NULL) { perror("fopen : unix.txt"); exit(1); } while ((n = fread(buf, sizeof(char) * 2, 3, rfp)) > 0) { buf[6] = '\0'; printf("n=%d, buf=%s\n", n, buf); } fclose(rfp); return 0; } |
- printf()는 저수준 출력
- fwrite가 존재 --> 고수준 출력
printf() -> fwrite() (고수준 출력으로 바꾼 예시)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #include <stdlib.h> #include <stdio.h> int main(void) { FILE *rfp, *wfp; char buf[BUFSIZ]; int n; if ((rfp = fopen("unix.txt", "r")) == NULL) { perror("fopen : unix.txt"); exit(1); } if ((wfp = fopen("unix.out", "w")) == NULL) { perror("fopen : unix.out"); exit(1); } while((n = fread(buf, sizeof(char)*2, 3, rfp)) > 0) { fwrite(buf, sizeof(char)*2, n, wfp); } fclose(rfp); fclose(wfp); return 0; } |
반응형
'Programming > C/C++' 카테고리의 다른 글
C/고수준 파일 입출력/파일 오프셋 지정 및 이동, 저장 (0) | 2017.10.26 |
---|---|
C/고수준 파일 입출력/형식 기반 입출력 함수 (0) | 2017.10.26 |
C/고수준 파일 입출력/문자열 기반 입출력 함수 (0) | 2017.10.26 |
C/고수준 파일 입출력/ 문자 기반 입출력 함수 (0) | 2017.10.26 |
C/고수준 파일 입출력/파일 포인터 지정 및 반환 (0) | 2017.10.26 |