• Linuxc


    输入流stdin默认是键盘,输出流stdout默认是显示器,错误流stderr

    #include <stdio.h>
    
    int main()
    {
        printf("请输入选择的数字:
    "); // 标准输出流
        int choice;
        scanf("%d",&choice); // 标准输入流
        printf("您输入的数字是:%d
    ",choice);
    }
    
    root@jiqing:~/cspace/les4# ./cio.out
    请输入选择的数字:
    10
    您输入的数字是:10
    
    
    #include <stdio.h>
    
    int main()
    {
        // printf("please input the value a: 
    ");
        fprintf(stdout,"please input the value a: 
    "); // 非标准输出流
    
        int a;
    
        // scanf("%d",&a);
        fscanf(stdin,"%d",&a); // 非标准输入流
        if (a<0) {
            fprintf(stderr,"the value must > 0 
    ");
            return 1;
        }
        return 0;
    }
    
    
    root@jiqing:~/cspace/les4# ./cio.out 
    please input the value a: 
    -1
    the value must > 0 
    
    

    重定向

    #include <stdio.h>
    int main()
    {
        printf("please input value of i:
    ");
        int i;
        scanf("%d",&i);
    
        printf("please input value of j:
    ");
        int j;
        scanf("%d",&j);
    
        printf("i+j=%d
    ",i+j);
        return 0;
    }
    
    
    root@jiqing:~/cspace/les5# cc main.c -o main.out && ./main.out
    please input value of i:
    10
    please input value of j:
    20
    i+j=30
    
    

    管道重定向处理

    root@jiqing:~/cspace/les5# ./main.out  1>> a.txt
    10
    20
    root@jiqing:~/cspace/les5# cat a.txt
    please input value of i:
    please input value of j:
    i+j=30
    
    

    这个时候会将所有的标准输出流都写入到a.txt中。

    root@jiqing:~/cspace/les5# ./main.out  1> a.txt
    10
    20
    root@jiqing:~/cspace/les5# cat a.txt
    please input value of i:
    please input value of j:
    i+j=30
    
    

    单箭头不会累计数据,每次都是最新的数据。

    重定向输入流。

    新建一个input.txt

    10
    30
    
    root@jiqing:~/cspace/les5# ./main.out < input.txt
    please input value of i:
    please input value of j:
    i+j=40
    
    

    直接就输出了结果,键盘都没有敲。

    标准错误流,

    #include <stdio.h>
    int main()
    {
        printf("please input value of i:
    ");
        int i;
        scanf("%d",&i);
    
        printf("please input value of j:
    ");
        int j;
        scanf("%d",&j);
        if (0!=j) {
            printf("%d/%d=%d
    ",i,j,i/j);
        } else {
            fprintf(stderr,"j must > 0
    ");
            return 1;
        }
        return 0;
    }
    
    
    root@jiqing:~/cspace/les5# ./main.out 1>t.txt 2>f.txt
    10
    0
    root@jiqing:~/cspace/les5# cat t.txt
    please input value of i:
    please input value of j:
    root@jiqing:~/cspace/les5# cat f.txt
    j must > 0
    
    

    错误流会重定向到f.txt中,正确流会到t.txt中。

    三者结合使用,

    root@jiqing:~/cspace/les5# vim input.txt
    
    10
    0
    
    root@jiqing:~/cspace/les5# ./main.out 1>t.txt 2>f.txt <input.txt
    root@jiqing:~/cspace/les5# cat t.txt
    please input value of i:
    please input value of j:
    root@jiqing:~/cspace/les5# cat f.txt
    j must > 0
    
  • 相关阅读:
    洛谷P3275 [SCOI2011]糖果
    2018年12月30&31日
    洛谷P4114 Qtree1
    洛谷P4116 Qtree3
    洛谷P4315 月下“毛景树”
    洛谷P1505 [国家集训队]旅游
    洛谷P2253 好一个一中腰鼓!
    CF616D Longest k-Good Segment
    洛谷P3979 遥远的国度
    洛谷P2486 [SDOI2011]染色
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/8336374.html
Copyright © 2020-2023  润新知