重定向
stdout:终端显示
int stdout_value=dup(fileno(stdout)); dup复制一个文件描述符
dup2(stdout_value,fileno(stdout)); 恢复控制台输出
#include <stdio.h>
int main()
{
int stdout_value=dup(fileno(stdout));
printf("手握日月摘星辰");
printf("%d\n",stdout_value) ;
freopen("stdout.txt","a",stdout); //将本应该显示在终端的显示在文件,文件不存在会新建文件
printf("手握日月摘星辰");
printf("%d\n",stdout_value) ;
printf("世间无我这般人");
fflush(stdout); //刷新缓存区,不刷新,这块的缓存会接着显示到终端
//关闭文件,继续显示在终端
dup2(stdout_value,fileno(stdout));
printf("世间无我这般人");
return 0;
}
fflush(stdout):刷新缓存区
stdin:键盘输入
//重定向stdin(键盘输入) 改为到stdin.txt文件
freopen("stdin.txt","r",stdin);
scanf("%d",&a);
printf("freopen() : printf to stdout .txt %d\n",a);
// fclose(stdout)的结果:
//1. 关闭stdout指针文件,就无法输出到stdout.txt
//2. 因为stdout被重定向到了stdout.txt文件,所以无法输出到终端
fclose(stdout);
printf("fclose stdout.txt,test\n");
stderror:错误

这篇博客探讨了C语言中的重定向概念,包括stdout、stdin和stderr的使用,以及如何恢复控制台输出和刷新缓冲区。同时,介绍了时间相关的概念,如GMT、UTC、本地时间和时间戳的转换。作业部分提出了两个实践任务,一是创建模拟时钟,将时间打印到print.txt文件,二是编写函数获取当前时间的精确秒数、毫秒数等信息。
最低0.47元/天 解锁文章
2050

被折叠的 条评论
为什么被折叠?



