8.3.1 서식을 적용하지 않은 텍스트 출력
puts보다 원시적인 putchar라는 함수도 있다. 이 함수는 문자 하나만 출력한다. 두 함수의 인터페이스는 다음과 같다.
int putchar(int c); int puts(char const s[static 1]);
putchar의 매개변수 타입이 int인데, 특별한 이유는 없고 그냥 처음부터 그랬기 때문이다. 반면, 리턴 값이 int인 이유는 호출한 측이 오류를 리턴받기 위해서다. 특히 함수가 정상적으로 실행된 경우에는 인수 c를 리턴하고, 실패할 경우에는 어떠한 문자에도 대응되지 않는 EOF(End Of File)라는 음수 값을 리턴한다.
이 함수를 이용하면 다음과 같이 puts를 직접 구현할 수도 있다.
int puts_manually(char const s[static 1]) { for (size_t i = 0; s[i]; ++i) { if putchar(s[i]) == EOF) return EOF; } if (putchar('\n') == EOF) return EOF; return 0; }
이 코드는 하나의 예일 뿐, 실제로 이렇게 구현하는 것보다는 플랫폼에서 제공하는 puts를 사용하는 것이 훨씬 효율적이다.