몽상실현개발주의

[따배씨] 13.7 기타 입출력 함수들 본문

Language/C

[따배씨] 13.7 기타 입출력 함수들

migrationArc 2021. 6. 18. 17:52

[따배씨] 13.7 기타 입출력 함수들

따배씨 - 따라하며 배우는 C언어

13강 파일 입출력

13.7 기타 입출력 함수들

  • ungetc()
  • fflush()
  • setvbuf()

 

#include <stdio.h>

int main()
{
    FILE* fp;
    int ch;
    
    /* ungetc() */
    
    fp = fopen("input.txt", "r");
    
    ch = fgetc(fp);
    fputc(ch, stdout);
    
    ungetc(ch, fp);
    // fputc(ch, stdout) 의 결과가 다시 출력됨
    ungetc((int)'A', fp);
  	// fputc(ch, stdout) 의 결과를 'A'로 변경하여 출력
    
    ch = fgetc(fp);
    fputc(ch, stdout);
    
    fclose(fp);
    
    return 0;
}
ungetc(ch, fp);
  • 스트림에 마지막으로 읽어들여졌던 자리에, 문자를 넣어주고 파일 위치가 감소하여 읽기 이전으로 돌아가 스트림을 읽음

 

 

#include <stdio.h>

int main()
{
    FILE* fp;
    int ch;
    
    /* setvbuf() */
    
    fp = fopen("input.txt", "r");
    
    char bufferArray[32] = {'\0'};
    
    setvbuf(fp, bufferArray, _IOFBF, sizeof(buffer));    // _IOLBF, _IOFBF, IONBF
    
    ch = fgetc(fp); // Read just only a single character!
    
    // dump buffer
    for (int i = 0; i < sizeof(buffer); ++i)
        printf("%c", buffer[i]);
    printf("\n");
    
    fclose(fp);
    
    return 0;
}
setvbuf(fp, bufferArray, _IOFBF, sizeof(buffer));    // _IOLBF, _IOFBF, IONBF
  • bufferArray 를 buffer 로 사용

 

ch = fgetc(fp); // Read just only a single character!
  • 파일 입력 Stream 에서 문자 하나만 읽었지만, 전체 문자열이 buffer 로 저장된다
  • 파일에서 버퍼로 옮기는 것은 느리지만, 버퍼에서 처리하는 것은 빠르기 때문에 가능한 buffer 로 옮겨 두려고 함

 

/* fflush() */
fflush(fp)
  • 출력 buffer 를 비움

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

Comments