- C/C++에서 printf()의 리턴값은 무엇일까요?
- 컴퓨터야그/컴퓨터 일반
- 2008. 1. 4. 11:22
- C/C++, printf(), Synopsis
NAME
fprintf, printf, snprintf, sprintf - print formatted output
SYNOPSIS
The Open Group Base Specifications에서 살짝 업어온 printf() 계열 함수들의 용법입니다.
#include <stdio.h>
int fprintf(FILE *restrict stream, const char *restrict format, ...);
int printf(const char *restrict format, ...);
int snprintf(char *restrict s, size_t n,
const char *restrict format, ...);
int sprintf(char *restrict s, const char *restrict format, ...);
그런데, 리턴타입을 보면 void가 아니라 int입니다.
printf() 계열 함수들의 리턴값은 무엇일까요?
답 열기
대학원 다닐 때 한 수업 시간에 교수님께서 하신 질문이었습니다.
공교롭게도 (왜 그런 의문을 품었는지는 기억나지 않지만) 수업 며칠 전에 궁금해서 Solaris의 man page를 뒤져봤었습니다. 이걸 RTFM이라고 하죠... Read The F*cking Manual... 아니, Fine인가요? ^^;;
그래서 이 특이한 질문에 무난하게 대답할 수 있었습니다.
그러자, 교수님 말씀이...
그걸 도대체 어떻게 알고있어요?하시더군요. 글쎄요... 왜 찾아봤을까요? printf() 함수를 사용하는 프로그래머의 0.00001%도 사용하지 않을 것을 말이죠...
'컴퓨터야그 > 컴퓨터 일반' 카테고리의 다른 글
이제는 더욱 멀어질 것 같은 ActiveX로부터의 독립 (3) | 2008.01.21 |
---|---|
수학은 아름답다 : Mandelbrot set이란? (4) | 2008.01.17 |
C/C++에서 printf()의 리턴값은 무엇일까요? (4) | 2008.01.04 |
사각형의 무게중심 계산법 (2) | 2007.11.16 |
2차원에서 임의의 한 점이 삼각형 내부에 있는지 판별하는 방법 (0) | 2007.11.16 |
Vista용 DreamScene 화면 수작업으로 만들기 (0) | 2007.11.13 |
-
♡바다.. 2008.01.08 15:59
머 자세히는 모르겠지만..
write 하는 넘의 기본이 아닐까?
Serial 통신 하는 경우에도 Write 하는 넘이 실제로 얼마나 썼는지를 리턴 하니깐..
printf 같은 경우는 일반적으로 예전에는 crt 상에 출력을 하는데..
crt 가 없거나 혹은 video memory 가 없는 경우에 제대로 출력이 안되면 실제로 리턴되는 값이 작게 나오지 않을까?
일반적으로 serial 같은 경우는 실제로 쓴 값의 리턴을 무지하게 중요시 하는데...
그래야 버퍼가 찼을 경우 다시 기다렸다가 보내야 하니깐..
printf 같은 경우도 그런 경우라 생각이 되는디..
아참...
글고 일반적으로 char[] 같은 경우는..
printf 가 썼는디 실제 버퍼가 작을 경우는 써진 만큼의 값만 리턴이 됨..
그럼 그거 보구 버퍼가 모자란다는 말을 할수 있지 않을까?-
BLUEnLIVE 2008.01.08 16:29
뭐, 이런 장난기 어린 글에 상세한 답변까지 달아주시나...
사실 지금이야 메모리와 하드가 빵빵하니까 printf/fprintf 쓰면서 이런 고민 하는 사람 없지만, 예전 메모리가 모자라던 시절이나 OS를 만드는 사람들(즉, sprintf를 쓰는 사람들)에겐 당연히 너무나 필요한 기능이지...
-
-
지나가는 이 2008.01.20 08:50
사족입니다만... 리턴값이 아니라 리턴타입이 무엇이냐고 물어야 더 정확하지 않을까 싶습니다.
리턴값은 그야말로 값이기 때문에 알 수가 없죠.
그리고 작성자님이 대답하신 int는 그야말로 타입이지 값은 아닌거 같아서요... 그럼 즐거운 하루 되십시오.
Recent comment