inflearn logo
강의

Course

Instructor

Advanced C Language

File I/O

fputs에서 fwrite 로 변경 후 버퍼타입이 헷갈리는데요

158

ksk28110004

5 asked

0

동영상에서 34분 전후를 보면

fputs는 line 버퍼 사용하고 있고

fwrite 로 변경후 fully 버퍼를 사용한다고 나오는데

fwrite 를 써도 출력 대상이 stdout 이니까

버퍼 종류는 똑같이 line 버퍼가 아닌가요?

c 컴퓨터-구조 임베디드 device-driver

Answer 1

0

jikim1770

안녕하세요.

fputs는 문자열에 '\n'가 나오면 버퍼가 비위지는 fflush가 되기 때문에 출력 되고 fwrite는 라이브러리 버퍼가 꽉 채워지지 않으면 출력이 안되므로 fully 버퍼 방식을 사용 합니다. 똑같이 stdout 으로 출력 되더라도 버퍼링을 안 할 수도 있고 , line buffered, fully buffered 로 작동되도록 library 안에 구현 되어 있습니다.

0

ksk28110004

답변 주신거 참조해서 정리해봤습니다.

  1. fputs 이나 fwrite 모두 출력 대상에 따라 버퍼 종류가 결정된다.

  2. stdout fputs 으로 출력 시 라인버퍼 즉 개행을 만나거나 버퍼가 꽉 차면 flush 하지만
    fgets 읽었기때문에 개행까지만 읽어서 개행 수만큼 루프가 돌고 sleep 이 실행됐다.

  3. stdoutfwrite 으로 출력 시 역시 라인버퍼이며 개행을 만나거나 버퍼가 꽉 차면 flush 하지만


    fread 로 읽었기 때문에 개행이 여러개 포함되었고 결과적으로 한번의 호출에
    읽은 개행 수 만큼 flush 하여 fgets 보다 루프를 덜 실행하고 sleep 도 덜 실행되서
    fputs 보다 상대적으로 빠르게 동작했다.

 

00. 인버터 회로만 보고 소비전력을 예측 가능하나요 ?

0

5

0

58강, 유니폴라, 바이폴라 방식중 바이폴라가 대세라고 보면 되나요 ?

0

7

1

57강. 모터인데 왜 전압제어를 하나요 ?

0

9

2

57강. PWM은 sine을 만들어 내는 걸로 이해 하면 되나요 ?

0

11

2

49강. 제어이론의 구체적 다이어그램 설명 요청드립니다.

0

11

2

55강. dead time을 고려하면, 원래의 original신호와는 달라지지 않나요 ?

0

8

2

리눅스에서 다시 윈도우로 복구 시키는 방법 문의합니다.

0

9

1

로봇 조립 문의 방법 문의

0

19

3

준비물 문의 그리고 로봇 조립 문의

0

15

2

스위칭 주파수 설정

0

22

2

영상 다운로드는 안되나요?

0

14

1

Flash 메모리 전원 껐을 때

0

32

1

빵판 꾸미기 커리큘럼 34. 질문

0

30

1

라즈베리파이 노트북에 안뜸

0

27

1

라즈베리파이 노트북에 안뜸

0

25

1

섹션7에서 개념적 궁금증

0

24

1

26년2회 실기기출은 언제쯤...

0

60

2

이론 공부법 요약본 버전 업데이트 문의

0

41

2

진도율 관련

0

31

1

P6KE47CA 이 부품에 대해서 궁금합니다.

0

37

1

교육용 보드 쓰로틀 질문입니다.

0

49

3

14강 PCB 배선 및 검사 파트 질문

0

31

1

PCB보드 주문 비용

0

38

1

주소에서 &기호 질문

0

63

1