zoukankan      html  css  js  c++  java
  • Linux学习笔记17——输入输出重定向

    1 何谓输入输出重定向?

    默认情况下输入是由键盘输入的。输出是默认的输出到屏幕上。而输入输出重定向就是改变默认的输入输出方向  

    2 freopen函数

    freopen是被包含与stdio.h头文件中,是重定向输入输出流的函数。此函数一般用于将一个指定的文件打开一个预定义的流:标准输入、标准输出或者标准出错。

    声明:FILE *freopen( const char *path,    //文件名,用于存储输入输出的自定义文件名

                const char *mode,     //文件打开的模式。和fopen中的模式(如r-只读, w-写)相同

                FILE *stream        //一个文件,通常使用标准流文件,stdin-输入,stdout-输出

              );              //返回值:成功,则返回一个path所指定文件的指针;失败,返回NULL

    3 先写一个是小写字母变为大写字母的程序,我这里是test5.c

    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    
    int main(){
        int ch;
        while((ch=getchar())!=EOF){
            putchar(toupper(ch));
        }
        exit(0);
    }

    4 然后写一个test6.c,用于调用test5.c

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc,char *argv[]){
        char *filename;
        if(argc != 2){
            fprintf(stderr,"usage:useupper file
    ");
            exit(1);
        }
        filename=argv[1];      //获取文件名
        if(!freopen(filename,"r",stdin)){  //将stdin文件流和filename文件关联起来
            fprintf(stderr,"could not redirect stdin from file %s
    ",filename);
            exit(2);
        }
        execl("./test5","test5",NULL);    //调用test5.c中的程序,使小写字母变成大写字母
        perror("could not exec ./test5");
        exit(3);
    }

    5 最后写一个file.txt,内容为:this is the file,file.txt,it is all lower case

    6 结果如图:

  • 相关阅读:
    Silverlight 中使用不同面板进行布局的效果比较
    将PDF格式文件添加到iPhone4手机 iBooks程序中.
    [转]学习WPF参考书
    [转]OEM版XP SP3安装时提示“序列号无效”的解决方法
    关于系统响应函数OnSysCommand
    为何在自定义消息处理函数中无法利用wParam或lParam传递指针?
    自定义消息(上)
    VC++中单选与复选按钮的使用
    VC++ Combo Box/Combo Box Ex控件
    VC++中的ON_COMMAND_RANGE宏
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3495549.html
Copyright © 2011-2022 走看看