inflearn logo
강의

講義

知識共有

高度なC言語

ファイル入出力

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

177

ksk28110004

投稿した質問数 5

0

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

fputs는 line 버퍼 사용하고 있고

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

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

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

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

回答 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. stdout 에 fwrite 으로 출력 시 역시 라인버퍼이며 개행을 만나거나 버퍼가 꽉 차면 flush 하지만


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

 

signal함수와 관련하여 질문있습니다.

0

16

0

홀센서 순서, 슈미트 트리거 풀업 저항 질문

0

40

1

20강 4분 30초 코드와 6분 30초 코드 관련 질문

0

46

1

Vivado 설치 / download 불가

1

54

2

영상에서 소개되는 코드와 강의 노트 코드가 달라요

0

50

1

pspice 시뮬레이션

0

48

0

오디오 문제

0

60

2

관련 제품 정보 문의

0

47

1

쓰레드 상태 관련 질문입니다.

0

50

2

runpod에서 실습하는 내용이 조금 다릅니다.

0

39

1

DACL 질문

0

56

1

dc bias 고려

0

59

1

DLL 제작자가 PDB도 같이 제공해야 한다는 설명에 질문

0

50

2

안녕하세요. 저전력 B키트 사용해서 DC 모터 구동을 해보려고 합니다.

0

50

2

정처기 2026-3 실기 문의

0

106

2

정처기 실기 3회 컴싸 사용 여부

0

73

1

두번째 SystemClock_Config(): 여기가 디버깅이 계속 안걸려요

0

45

1

모의고사 1 회 2번문제 중

0

83

2

26-2 이론문제 재탕

1

62

1

26-2년도 코드문제

0

42

0

26-2 코드문제

0

51

1

uart 실습, 입력 커패시터 선정 식, 프리휠링 다이오드 평균 전류

0

60

1

15분 48초 질문

0

68

2

주소에서 &기호 질문

0

92

1