请看程序
#include <string.h>
#include <stdio.h>
int main(void)
{
int i;
/* redirect standard output to a file */
if (freopen("name.txt", "w", stdout)
== NULL)
fprintf(stderr, "error redirectingstdout/n");
/* this output will go to a file */
printf("This will go into a file.");
/* close the standard output stream */
fclose(stdout);
scanf( "%d", &i) ;
printf("%d",i); //这个语句没有用了,不能显示i的值了
return 0;
}
解决方法:
在对stdout进行重定向之前拷贝一份stdout对应的文件描述符:
int fd_stdout = dup( fileno(stdout) );
在fclose(stdout)之后如果想恢复原来的stdout的话:
fdopen( fd_stdout, "w" );