Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

이상한 코딩 나라의 혜돌이

[C] printf, write 함수에 대해서 본문

Study/Troubleshooting

[C] printf, write 함수에 대해서

혜돌이 2018. 12. 3. 16:44

소켓에서 읽어온 메시지를 write 함수로 출력하고 이어서 printf 함수를 썼을 때 출력 시점과 모양이 이상하게 되는(?) 문제가 발생했다.


write = write(1, buf, read);

...

printf("\nInput Word: ");


실제 출력해보면 개행이 사라지는 등 이상한 .... 현상이 생겼다.


교수님께 여쭤보니, stdout에 출력할 때 write 함수와 printf 함수를 섞어서 사용했기 때문에 발생한 문제라고 하셨다.

또 추가로 찾아보니 write 함수는 버퍼에 있는 내용을 그대로 출력하고 printf 함수는 표준 출력 모드로 동작하여 종료 문자('\n', '\0')를 만났을 때 내용을 출력한다고 한다.


문제를 해결하기 위해서는,

  • printf 또는 write 함수 중 하나로 통일해서 사용 (권장)
순서나 출력 모양이 꼬이지 않도록 함수 자체를 통일하면 쓸데없는 문제가 생기지 않음

  • printf 함수 사용 후에 flush(stdout);으로 버퍼를 비워줌
printf 함수를 쓴 다음 버퍼를 비워줌으로써 종료 문자를 만나지 않았더라도 내용을 바로 출력하도록 함


이 두 방법 중 하나를 사용하면 된다.



-

소켓 프로그래밍 하느라 넘넘 고생중이었는데...

교수님이 엄청 엄청 엄청 엄청 엄청 도와주시고 떠먹여주시고 ...

교수님은 천사에다 천재가 분명하다

흑흑흑 감사해요 교수님 ...


Comments