Linuxc - 标准输入流、标准输出流、标准错误流
输入流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 - 标准输入流、标准输出流、标准错误流的更多相关文章
- java8_api_io
IO-1 i/o的概念 File类详解 java.io.File java.io.FileFilter接口 只有一个方法 这是一个函数式接口 ...
- 五、stdout,stdoin和stderr
stdout,stdin和stderr分别是标准输出流.标准输入流和标准错误流,当一个用户进程被创建的时候,系统会自动为该进程创建这三个数据流,默认情况下这三个流是在终端上表现出来的.可以使用fpri ...
- python 精华梳理(已理解并手写)--全是干货--已结
基础部分 map,reduce,filter,sort,推导式,匿名函数lambda , 协程,异步io,上下文管理 自定义字符串转数字方法一不使用reduce import re def str2i ...
- java 21 - 11 IO流的标准输入流和标准输出流
标准输入输出流 System类中的两个成员变量: public static final InputStream in "标准"输入流. public static final P ...
- java 标准输出流、标准错误输出流、标准输入流及扫描仪
初步认识标准输出流.错误输出流.输入流.扫描仪 package com.mydemo.controller; import java.util.Scanner; public class HelloW ...
- stdout( 标准输出流)和 stderr( 标准输入流) 重定向问题
我想把提示信息和错误信息列表都写入到同一个文件里, /* ** 设置流, 使输出与错误流都指向指定的文件 */ if( (output1 = freopen( PATH, "a", ...
- 8.2 C++标准输出流对象
参考:http://www.weixueyuan.net/view/6408.html 总结: iostream头文件,包含了该头文件后,我们就可以直接使用这些对象,包含标准的输出流对象cout.ce ...
- 在Android平台下的基于Linux-C 的测试程序
iTOP-4412 开发板可以运行的文件系统很多,在具体的文件系统上实现特定功能前,可以 使用Linux-C 程序来测试硬件以及驱动.而且这些程序很容易移植到Android.Qt/E 以及最小文件系统 ...
- 在windows下搭建linux-c学习环境
下载virtualbox并安装: https://www.virtualbox.org/wiki/Downloads 现在vagrant并安装: https://www.vagrantup.com/d ...
随机推荐
- golang 栈操作
Monk's Love for Food Our monk loves food. Hence,he took up position of a manager at Sagar,a restau ...
- 微信跳一跳辅助自动跳Python
一.说明 此代码借鉴github一位大神所写,已经做了简化合并处理,如果能成功连上手机并运行,可以实现程序自动玩游戏,刷个1000+的分数轻轻松松 github源码地址 https://github. ...
- 微信小程序开发之picker选择器组件用法
picker组件时一个从底部弹起的可滚动的选择器(嵌入页面滚动器组件picker-view查看https://mp.weixin.qq.com/debug/wxadoc/dev/component/p ...
- 用Python让单片机“行动”起来——MicroPython实战入门篇
MicroPython以微控制器作为目标,从而使得Python可以用来控制硬件.说到MicroPython,也许有人会感到陌生.而说到和它密切相关的Python,是否会恍然大悟呢?Python属于解释 ...
- Tsung:开源多协议分布式负载&压力测试工具
Main features High Performance: the load can be distributed on a cluster of client machines Multi-pr ...
- css条纹背景
一. 水平条纹 1. 两种颜色: html <div class="stripe"></div> css .stripe{ width: 250px; he ...
- JDBC详解系列(三)之建立连接(DriverManager.getConnection)
在JDBC详解系列(一)之流程中,我将数据库的连接分解成了六个步骤. JDBC流程: 第一步:加载Driver类,注册数据库驱动: 第二步:通过DriverManager,使用url,用户名和密码 ...
- FFmpeg AVPacket
AVPacket注解 AVPacket 是一个结构体,存储压缩数据.可作为编码器的输出,解码器的输入. 对于 Video 一般包含一个压缩帧,对于 Audio 可能包含多个压缩帧. 编码器允许输出空 ...
- 【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 2023 Solved: 778 ...
- Spring框架入门之开发环境搭建(MyEclipse2017平台)
基于MyEclipse2017平台搭建Spring开发环境,这里MyEclipse已将Spring集成好了,我们只需要做一简单配置即可 一.环境配置 OS:Windows7 64位 IDE工具:MyE ...