输入输出重定向

来源:互联网 发布:火影忍者特效软件 编辑:程序博客网 时间:2024/04/24 14:33

使用标准输入流,标准输出流和标准错误流,这些标准流都被预分配给键盘和显示器。在需要的时候,
可以使用重定向临时改变这些默认分配。重定向是这样一种过程,我们借助它指定一个用于替代某个
标准文件的文件。
输入重定向
可以将标准输入从键盘重定向到任何文本文件。输入重定向运算符为小于号(<),意味着该命令从此给
派的文件得到它的输入。
输出重定向
将命令输出复制给文件而不是显示器上显示。输出重定运算符为大小于号(>),当输出重定向至一个不
存在的文件,系统会创建它并且写入输出,如果该文件已存在,想要将输出追加至该文件,可以使用两
个大于号(>>)。

程序中的重定向
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int a;
    scanf("%d",&a);
    printf("%d",a);
    return 0;
}
程序文件为a.c
编译gcc a.c
运行a,此时输入输出为键盘与显示器。
文件in.txt内容为
12
运行a<in.txt,输入重定向,从in.txt中读,输出至显示器。
运行a<in.txt>out.txt
cat out.txt
12
输入输出重定向,从in.txt读,输出至out.txt。

使用函数FILE *freopen( const char *path, const char *mode, FILE *stream );
返回值为一个文件的指针,
path为文件路径,
mode为文件打开方式,常用为"w":写入文件,"r":读取文件,
stream为一个文件,通常我们设为标准流文件,如stdin,stdout,stderr
freopen将标准流文件重定向到指定路径文件中。
#include<stdio.h>
#include<stdlib.h>
int main()
{
    FILE *stream;
    int a;
    if((stream=freopen("in.txt","r",stdin))==NULL)
        exit(-1);
    scanf("%d",&a);
    close(stream);
    stream=freopen("data.txt","w",stdout);
    printf("%d",a);
    close(stream);
    return 0;
}
freopen("in.txt","r",stdin),使输入重定向,从in.txt中读
freopen("data.txt","w",stdout),输出重定向到data.txt
freopen("CON","w",stdout),输出至控制台命令行。(CON表示命令行)