더북(TheBook)

TAKEAWAY 8.19 나중에 다시 읽을 내용을 출력할 때는 "%+d""%#X""%a"로 지정한다.

부록 K

옵션으로 제공하는 인터페이스인 printf_sfprintf_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는 스트림과 서식, 인수 스트링의 유효성을 검사할 때 사용한다. 이 함수는 한 터미널에 두 스트림이 연결될 때 두 가지 출력을 하나로 합칠 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.