71.11 질문
, 이 은총님이 작성문제를 풀었으나 문제 의도와 다르게 풀었고,
문제 의도대로 풀어보려 하고 있는데,
stdout이 어떻게 쓰이는 지가 이해가 되지 않습니다.
질문들 확인하니 fwrite(&answer[i], sizeof(char), 1, stdout);
이렇게 쓰라는 것 같은데..
stdout이 어떻게 쓰이는 건지 모르겠습니다.
문제는 fseek와 fread를 활용하여 해결하였습니다.
Re: 71.11 질문
, 도장_ 관리자님이 작성FILE로 선언하고 파일에 쓰기를 하는 것도 스트림 쓰기입니다.
stdin - 표준 입력
stdout - 표준 출력
stderr - 표준 에러
세 가지 기본 스트림이 있습니다. stdout에 쓰기를 하면 화면에 출력이 됩니다.
심사문제는 화면에 출력된 텍스트 비교로 판단하기 때문에 stdout 표준 출력 스트림으로 출력하라고 했을 뿐입니다.
표준 출력을 working.log 같은 파일로 지정해서 로그 기록으로 쓰고, 표준 에러는 working.err 같은 에러 로그 파일로 지정하는 방법도 있습니다.
#include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <unistd.h> int main(int argc, const char *argv[]) { int out = open("cout.log", O_RDWR|O_CREAT|O_APPEND, 0600); if (-1 == out) { perror("opening cout.log"); return 255; } int err = open("cerr.log", O_RDWR|O_CREAT|O_APPEND, 0600); if (-1 == err) { perror("opening cerr.log"); return 255; } int save_out = dup(fileno(stdout)); int save_err = dup(fileno(stderr)); if (-1 == dup2(out, fileno(stdout))) { perror("cannot redirect stdout"); return 255; } if (-1 == dup2(err, fileno(stderr))) { perror("cannot redirect stderr"); return 255; } puts("doing an ls or something now"); fflush(stdout); close(out); fflush(stderr); close(err); dup2(save_out, fileno(stdout)); dup2(save_err, fileno(stderr)); close(save_out); close(save_err); puts("back to normal output"); return 0; }이러한 코드도 살펴볼 수 있습니다.