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

#include <stdio.h>

int main()
{
printf("请输入选择的数字:\n"); // 标准输出流
int choice;
scanf("%d",&choice); // 标准输入流
printf("您输入的数字是:%d\n",choice);
}
root@jiqing:~/cspace/les4# ./cio.out
请输入选择的数字:
10
您输入的数字是:10
#include <stdio.h>

int main()
{
// printf("please input the value a: \n");
fprintf(stdout,"please input the value a: \n"); // 非标准输出流 int a; // scanf("%d",&a);
fscanf(stdin,"%d",&a); // 非标准输入流
if (a<0) {
fprintf(stderr,"the value must > 0 \n");
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:\n");
int i;
scanf("%d",&i); printf("please input value of j:\n");
int j;
scanf("%d",&j); printf("i+j=%d\n",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:\n");
int i;
scanf("%d",&i); printf("please input value of j:\n");
int j;
scanf("%d",&j);
if (0!=j) {
printf("%d/%d=%d\n",i,j,i/j);
} else {
fprintf(stderr,"j must > 0\n");
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

Linuxc - 标准输入流、标准输出流、标准错误流的更多相关文章

  1. java8_api_io

    IO-1    i/o的概念    File类详解        java.io.File    java.io.FileFilter接口        只有一个方法        这是一个函数式接口 ...

  2. 五、stdout,stdoin和stderr

    stdout,stdin和stderr分别是标准输出流.标准输入流和标准错误流,当一个用户进程被创建的时候,系统会自动为该进程创建这三个数据流,默认情况下这三个流是在终端上表现出来的.可以使用fpri ...

  3. python 精华梳理(已理解并手写)--全是干货--已结

    基础部分 map,reduce,filter,sort,推导式,匿名函数lambda , 协程,异步io,上下文管理 自定义字符串转数字方法一不使用reduce import re def str2i ...

  4. java 21 - 11 IO流的标准输入流和标准输出流

    标准输入输出流 System类中的两个成员变量: public static final InputStream in "标准"输入流. public static final P ...

  5. java 标准输出流、标准错误输出流、标准输入流及扫描仪

    初步认识标准输出流.错误输出流.输入流.扫描仪 package com.mydemo.controller; import java.util.Scanner; public class HelloW ...

  6. stdout( 标准输出流)和 stderr( 标准输入流) 重定向问题

    我想把提示信息和错误信息列表都写入到同一个文件里, /* ** 设置流, 使输出与错误流都指向指定的文件 */ if( (output1 = freopen( PATH, "a", ...

  7. 8.2 C++标准输出流对象

    参考:http://www.weixueyuan.net/view/6408.html 总结: iostream头文件,包含了该头文件后,我们就可以直接使用这些对象,包含标准的输出流对象cout.ce ...

  8. 在Android平台下的基于Linux-C 的测试程序

    iTOP-4412 开发板可以运行的文件系统很多,在具体的文件系统上实现特定功能前,可以 使用Linux-C 程序来测试硬件以及驱动.而且这些程序很容易移植到Android.Qt/E 以及最小文件系统 ...

  9. 在windows下搭建linux-c学习环境

    下载virtualbox并安装: https://www.virtualbox.org/wiki/Downloads 现在vagrant并安装: https://www.vagrantup.com/d ...

随机推荐

  1. golang 栈操作

    Monk's Love for Food   Our monk loves food. Hence,he took up position of a manager at Sagar,a restau ...

  2. 微信跳一跳辅助自动跳Python

    一.说明 此代码借鉴github一位大神所写,已经做了简化合并处理,如果能成功连上手机并运行,可以实现程序自动玩游戏,刷个1000+的分数轻轻松松 github源码地址 https://github. ...

  3. 微信小程序开发之picker选择器组件用法

    picker组件时一个从底部弹起的可滚动的选择器(嵌入页面滚动器组件picker-view查看https://mp.weixin.qq.com/debug/wxadoc/dev/component/p ...

  4. 用Python让单片机“行动”起来——MicroPython实战入门篇

    MicroPython以微控制器作为目标,从而使得Python可以用来控制硬件.说到MicroPython,也许有人会感到陌生.而说到和它密切相关的Python,是否会恍然大悟呢?Python属于解释 ...

  5. Tsung:开源多协议分布式负载&压力测试工具

    Main features High Performance: the load can be distributed on a cluster of client machines Multi-pr ...

  6. css条纹背景

    一. 水平条纹 1. 两种颜色: html <div class="stripe"></div> css .stripe{ width: 250px; he ...

  7. JDBC详解系列(三)之建立连接(DriverManager.getConnection)

      在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤. JDBC流程: 第一步:加载Driver类,注册数据库驱动: 第二步:通过DriverManager,使用url,用户名和密码 ...

  8. FFmpeg AVPacket

    AVPacket注解 AVPacket 是一个结构体,存储压缩数据.可作为编码器的输出,解码器的输入. 对于 Video 一般包含一个压缩帧,对于 Audio 可能包含多个压缩帧. 编码器允许输出空 ...

  9. 【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 2023  Solved: 778 ...

  10. Spring框架入门之开发环境搭建(MyEclipse2017平台)

    基于MyEclipse2017平台搭建Spring开发环境,这里MyEclipse已将Spring集成好了,我们只需要做一简单配置即可 一.环境配置 OS:Windows7 64位 IDE工具:MyE ...