본문 바로가기
Program Language/C

freopen

by Leo 리오 2011. 3. 31.
반응형

freopen

 #include <stdio.h>
FILE *freopen(const char *filename, const char *mode, FILE *stream);

 freopen는 열린 스트림을 주어진 파일로 대치한다.  파일 열기의 성공적여부에 관계없이 스트림을 닫는다.  freopen은 stdin, stdout, stderr에 연관된 파일을 변경할 때 유용하다.

  r      읽기 만을 위해 연다.
  w     쓰기 위해 생성한다.
  a     부가, 파일의 끝에서 쓰기를 위해 열기, 또는 파일이 없는 경우에 쓰기를 위해 생성한다.
  r+    파일을 갱신하기 위해 이미 있던 파일을 연다.
  w+   갱신을 위해 새로운 파일을 생성한다.
  a+   부가시키기 위해 열기. 파일 끝부분에서 갱신하기 이해 열거나 새로운 파일을 생성하기 위해 연다.


반환값
 성공적으로 수행을 마친 경우 freopen은 인수 stream을 반환한다.  에러가 발생한 경우에는 널을 반환한다.
 

예제 stdout
 #include <stdio.h>

int main(void)
{
  /* redirect standard output to a file */
  if (freopen("OUTPUT.FIL", "w", stdout) == NULL)
  fprintf(stderr, "error redirecting stdout\n");

  /* this output will go to a file 파일스트림에 써지게된다. */
  printf("This will go into a file.");

  /* close the standard output stream 닫고 파일작성*/
  fclose(stdout);

  //restore stdout to monitor for linux
 freopen("/dev/tty", "w", stdout);
 freopen("CON", "w", stdout);//window CON or CON:
  return 0;
}
 

예제2 stdin
#include <stdio.h>

int main(void)
{
/* redirect standard input to a file */
if (freopen("INPUT.FIL", "r", stdin) == NULL)
fprintf(stderr, "error redirecting stdin\n");


fclose(stdin);
//restore stdin from keyboard(terminal) for linux
freopen("/dev/tty", "r", stdin);
//freopen("CON", "r", stdin);//window CON or CON:
return 0;
}

반응형

'Program Language > C' 카테고리의 다른 글

signal handler 고찰  (0) 2011.06.03
fopen 과 fscanf로 읽어들이기  (0) 2011.05.31
exec함수 군  (0) 2011.04.19
gcc -D  (0) 2011.01.13
PAPI - Performance Application Programming Interface  (0) 2010.12.30

댓글