`
linguanghuan
  • 浏览: 3560 次
社区版块
存档分类
最新评论

标准输入复制到标准输出

阅读更多
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

#define BUFFSIZE 4096

int main(void)
{
        int n;
        char buf[BUFFSIZE];
        while ((n = read(STDIN_FILENO, buf, BUFFSIZE)) > 0)
                if (write(STDOUT_FILENO, buf, n) != n)
                        printf("write error\n"); exit(1);
        if (n < 0)
                printf("write error\n");

        exit(0);
}

 

运行结果
[lingh@test advanced_unix]$ in2out
rrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

 

 

知识点:

read()  write()  STDIN_FILENO STDOUT_FILENO   在头文件unistd.h中

read 返回读得字节数 到达文件尾端 read返回0, 发生错误返回-1

open read write lseek close 提供了不用缓存的IO,这些函数都使用文件描述符

STDIN_FILENO是文件描述符,与stdin的差别, stdin是FILE* 类型的在头文件stdio.h中

stdio.h 写道
extern struct _IO_FILE *stdin; /* Standard input stream. */
extern struct _IO_FILE *stdout; /* Standard output stream. */
extern struct _IO_FILE *stderr; /* Standard error output stream. */

 

 

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
        int c;
        while ((c = getc(stdin)) != EOF)
                if (putc(c, stdout) == EOF)
                        printf("output error\n"); exit(1);
        if (ferror(stdin))
                printf("input error\n");
        exit(0);
}

 

 运行结果:

[lingh@test advanced_unix]$ gcc -o getc2putc getc2putc.c
[lingh@test advanced_unix]$ getc2putc
3333333333333333
3333333333333333
5555555555555555555
5555555555555555555
^C

 

 知识点

1. stdin stdout EOF  getc  putc  ferror 在stdio.h中

#ifndef EOF
# define EOF (-1)
#endif

 

 

分享到:
评论

相关推荐

    LINUX输入输出与文件

    1.3. 标准输入/输出流 5 2. 基于文件描述符的文件操作(非缓冲) 6 2.1. 文件描述符 6 2.2. 打开、创建和关闭文件 6 2.3. 读写文件 7 2.4. 文件定位 7 2.5. 获取文件信息 7 2.6. 文件的锁定 8 2.7. 文件描述符的复制 ...

    teeProgram:该程序从标准输入获取输入并将其输出到标准输出和运行时指定的文件

    Streams 阅读和 Tee 计划 该程序应该从标准输入获取输入并将其输出到标准输出和运行时指定的文件。 示例:节点 tee outputfile.txt 将回显用户提供的输入并将其复制到 outputfile.txt 文件中

    谈UPS“输出功率因数”之误称

    对UPS而言,在其说明书上有两个功率因数值,一个是在“输入”栏目中,一个在“输出”栏目中。对应“输入”栏目的称作输入功率因数,比如6脉冲输入的UPS的输入功率因数是0.8,12脉冲输入的UPS的输入功率因数是0.9等。...

    输入输出:我对C语言中输入输出理论的理解

    输入输出我对C语言中输入输出理论的理解第一次提交:出于各种原因,我于2020年开始学习C.现在,我将证明我对学习计算机科学的... 在C实现中,在C标准库中为输入和输出指定的getchar()和putchar()函数。 在while语句

    读霸1.3 边输入文档边朗读

    也可根据用户的选择,将复制到剪裁板上的内容朗读出来。语 音标准,校对准确,可智能处理多音字、数字、标点、音调等。输入时可 逐字朗读,亦可遇标点符号时整句一起朗读。本软件一改从前您进行汉字 排版编辑时单调无味...

    wtee:Webview管道数据

    将标准输入复制到标准输出。 启动本地http服务器,可以在其上查看管道数据。 换句话说,很像unix tee实用程序, wtee将标准输入复制到标准输出,同时还使管道传输的数据在网页上可见。 例如: tail -f /var/log/...

    删除给定字符串中的数字字符,并输出删除数字字符后的字符串

    最后,使用printf函数将处理后的字符串输出到标准输出中。 需要注意的是,gets函数在最新的C标准中已经被弃用,建议使用fgets函数代替。同时,需要限制输入的字符串长度,以避免缓冲区溢出等安全问题。可以考虑使用...

    Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘。如下: 1.raw_input 2.input raw_input函数 raw_input() 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符): 复制代码 ...

    HadoopMapReduce:输出在输入文本中出现至少 100 次的单词

    - 要复制由 Hadoop 生成的输出目录,请使用以下命令: “hadoop fs -copyToLocal output_question1 输出” - 将标准输出和标准错误复制到文件使用:“some_command &&gt; file” $ hadoop namenode -format 14/10/27 ...

    C语言程序设计标准教程

     本例中用一个循环语句给a数组各元素送入奇数值,然后用第二个循环语句从大到小输出各个奇数。在第一个 for语句中,表达式3省略了。在下标变量中使用了表达式i++,用以修改循环变量。当然第二个for语句也可以这样作...

    功能简单的输入输出的单片机-C10S011八位单片机

    兼容标准C,使用简单,不需要重新记指令、看繁琐的手册,立即能上手。 三.保密性好,尚未有被破解先例。 四.电压:2.2V到5.5V适合单电池低压工作环境 五. 封装及资源:   SOP8封装,8个脚除去电源的两个脚,共有6...

    python基础教程之popen函数操作其它程序的输入和输出示例

    一、函数介绍 1.1 函数原型: 复制代码 代码如下:#include &lt;stdio&gt;FILE *popen...如果是w,调用程序就可以用fwrite向被调用程序发送数据作为它在标准输入流上的输入。 二、测试程序准备 这里准备两个很简单的程序

    一文搞定Java的输入输出流等常见流

    标准输出流PrintStream11.File类12.拷贝目录练习(重点)13.ObjectInputStream和ObjectOutputStream对象流14.IO +Properties联合使用 1.IO流分析 什么是IO? I:Input O:Output 通过IO可以完成对硬盘的读

    JAVA语言中read方法分析

    标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的 访问;加载文件和库的方法;快速复制数组的一部分的实用方法 in是 System类中一个InputStream类的对象.提供 输入数据的方法,最常 用的read方法有三...

    易新条形码打印(yxbarprint) v2.3

    点击打印按钮可将生成的条形码打印输出到标签或纸张上。点击复制按钮可以将条形码复制到剪贴板上,你可以在任何文字处理或图形处理系统中粘贴条形码进行排版、打印输出。点击转换按钮可将条形码转换为图片。你可以...

    易新条形码打印[yxbarprint]

    点击打印按钮可将生成的条形码打印输出到标签或纸张上。点击复制按钮可以将条形码复制到剪贴板上,你可以在任何文字处理或图形处理系统中粘贴条形码进行排版、打印输出。点击转换按钮可将条形码转换为图片。你可以...

    Linux命令大全

    很全很有用的命令收集哦,一定对你有用的... 52.tee命令:从标准输入读取并输出到标准输出和文件  53.tmpwatch命令:删除暂存文件  54.touch命令:更新文件或目录的时间  55.tree命令:以树状结构显示目录的内容

    中小学学生成绩管理系统EXCEL V1.0版

    本人曾上网搜索到EXCEL平台成绩管理系统不下20款,发现绝大多数都或多或少存在以下问题:总表(或成绩录入表)各项目名称、位置、格式均固定,如班级只能在某列输入且各班级名称必须采用统一格式(如“七(1)”、...

    duba13tbb.zip

    也可根据用户的选择,将复制到剪裁板上的内容朗读出来。语音标准,校对准确,可智能处理多音字、数字、标点、音调等。输入时可逐字朗读,亦可遇标点符号时整句一起朗读。本软件一改从前您进行汉字排版编辑时单调无味的...

    coreutils-8.32.tar.gz

    以可选块长度复制文件,默认情况下从标准输入设备输出到标准输出设备。复制过程中,还可以对文件进行一些转换。 df 显示参数中的文件所在分区磁盘空间的使用情况,如果没有给出文件参数就显示所有已经安装的文件...

Global site tag (gtag.js) - Google Analytics