TAKEAWAY 8.19 나중에 다시 읽을 내용을 출력할 때는 "%+d"나 "%#X"나 "%a"로 지정한다.
부록 K
옵션으로 제공하는 인터페이스인 printf_s와 fprintf_s는 스트림과 서식, 스트링 인수가 올바른 포인터인지 검사한다. 하지만 리스트에 나온 표현식이 올바른 서식 지정자인지는 검사하지 않는다.
int printf_s(char const format[restrict], ...); int fprintf_s(FILE *restrict stream, char const format[restrict], ...);
이 인터페이스를 사용하도록 stdout을 다시 여는 예제를 수정하면 다음과 같다.
int main(int argc, char* argv[argc+1]) { int ret = EXIT_FAILURE; fprintf_s(stderr, "freopen of %s:", argv[1]); if (freopen(argv[1], "a", stdout)) { ret = EXIT_SUCCESS; puts("feeling fine today"); } perror(0); return ret; }
이렇게 하면 출력 스트링에 파일 이름이 추가되기 때문에 진단 정보를 더욱 자세히 출력할 수 있다. fprintf_s는 스트림과 서식, 인수 스트링의 유효성을 검사할 때 사용한다. 이 함수는 한 터미널에 두 스트림이 연결될 때 두 가지 출력을 하나로 합칠 수 있다.