精华内容
下载资源
问答
  • 输入输出重定向

    2021-05-23 21:44:40
    文件读写数据;输入输出重定向;fopen

    很多时候,程序所需的数据不是以标准的输入输出的方式进行读写的,而是利用文件进行读写,事先把输入数据保存在文件中,这样就不必每次重新输入了,把输出的数据也保存在文件中,避免了输出太多,一卷平显示不全的情况,运行结束后,慢慢浏览文件即可。

    1.输入输出重定向

    使用文件最简单的方法是使用输入输出重定向
    只需在main函数的入口除加入以下两条语句:

    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    

    上述语句使scanf从文件input.txt读入,printf写入文件output.txt,此时不仅scanf何printf,所有都键盘输入、写屏幕输出的函数都将改用文件。

    例如:

    #define LOCAL
    #include<stdio.h>
    #define INF 1000000
    int main()
    {
    #ifdef LOCAL
         freopen("input.txt", "r", stdin);
         freopen("output.txt", "w", stdout);
    #endif // LOCAL
    
    int x;
    int sum = 0;
    while(scanf("%d", &x) == 1)
    {
         sum+=x;
    }
    printf("%d", sum);
    return 0;
    
    }
    

    结果如下:
    在这里插入图片描述
    在这里插入图片描述
    上述代码如果打算修改成标准输入输出的方式,只需要将#define LOCAL删除就可以了。

    2.fopen方式读写文件

    不使用重定向的方式读写数据,应使用fopen和fscanf/fprintf进行输入输出。

    #include<stdio.h>
    int main()
    {
         FILE *fin, *fout;
         fin = fopen("input.txt", "rb");
         fout = fopen("output.txt", "wb");
    
         int x;
         int sum = 0;
         while(fscanf(fin, "%d", &x) == 1)
         {
              sum+=x;
         }
         fprintf(fout, "%d", sum);
         fclose(fin);
         fclose(fout);
         return 0;
    }
    

    结果:
    在这里插入图片描述
    在这里插入图片描述
    如果把上述的程序改写为标准输入输出,只需要赋值fin=stdin;fout=stdout;不调用fopen和fclose接口。

    小结

    重定向和fopen两种方法各有优劣。重定向的方法写起来比较简单、自然,但是不能同时读写文件和标准输入输出;fopen的写法稍显繁琐,但是灵活性比较大(例如:可以反复打开并读写文件)。

    展开全文
  • vs中的exe存在与demo同级的debug下,dev在cpp同级的demo下 解决闪退方法:程序最后加system("pause")或其他读键盘的语句如getchar() 或在cmd中以命令行方式运行 命令行方式 输入e: 输入cdvs 输入cd...输入输出...

    vs中的exe存在与demo同级的debug下,dev在cpp同级的demo下

    解决闪退方法:程序最后加system("pause")或其他读键盘的语句如getchar()                                                   或在cmd中以命令行方式运行

    命令行方式

    输入e:    输入cd vs    输入cd test    输入cd  debug  输入dir(显示当前目录下的文件)    可以在此输入demo,则可运行demo.exe

    输入输出重定向

    输出的分类:cout:标准输出

                          clog:错误输出

                          cerr:错误输出(显示器下结果相同)

    命令行中输入 cls(clear screen)清空屏幕

                  输入 type a.txt 将 a.txt 在 cmd 中展示出来

                  输入 notepad a.txt 将 a.txt 在 notepad 中打开

                  上下箭头来回切换历史输入记录

    < >和 << >>(清空和追加)

    输出重定向

    若输入 demo >a.txt(等同于demo 1>a.txt)表示将 demo 的 标准输出 重定向到文件 a.txt 中

    若输入 demo 2>b.txt 表示将 demo 的 错误输出 重定向到文件 b.txt 中

    若输入 demo >a.txt  2>b.txt表示将 demo 的 标准输出重定向到文件a.txt 中,错误到b.txt中

    若输入demo 1>a.txt   2>&1,表示将标准重定向到 a.txt 中,再将错误重定向到a.txt中

    若在没有文件的情况下,<和<< 效果一样,都是生成一个文件

    若已有文件,则 < 是覆盖原来的文件,<< 是在原文件的基础上再追加重定向的内容

    输入重定向

    新建一个文本文档 z.txt 输入数据,在命令行中输 demo <z.txt ,将直接从z.txt中读取需要的数据,而不会再等待键盘输入,若所需数据比文件中数据多,则不会等待输入,而是将后续无数据的变量赋值为一个不可信的值,若文件中含错误输入,则会导致之后的数据不可信。 

    测试程序方法

    法一:建立多个txt,每个里面写需要的测试数据,cmd中输:debug >demo.exe   <txt

    法二:用notepad编辑3-b4-test.bat(批处理方式)

           内容:3-b4.exe < 3-b4-01.txt(输入重定向)                     > 3-b4-01-output.txt(输出重定向)

                      3-b4.exe < 3-b4-02.txt(输入重定向)                     > 3-b4-02-output.txt(输出重定向)

                      3-b4.exe < 3-b4-03.txt(输入重定向)                     > 3-b4-03-output.txt(输出重定向)

                      3-b4.exe < 3-b4-04.txt(输入重定向)                     > 3-b4-04-output.txt(输出重定向)

    如果这样写,输出结果为在4个文件中,想搞到一个文件中,可改txt名为3-b4-output.txt,但是若不改>,只会显示最后一组测试数据,因为后面的会相继覆盖前面的,可以将除了第一个 > 的后续改为 << 追加

    要想在cmd下运行bat文件时不显示内容,可在该文件开头加@echo off

    管道运算符

    作用:将一个程序的输出当做下一个的输入,可以级联使用

    方式:e:\vs\test\debug>type z.txt | demo | demo2(demo求最大值,demo2求平方根)

    比如现在想要测试分解浮点数的数据,可以在notepad中建立文件 : 3-b4-test-data.txt

      格式:@echo off

                    [3-b4-01(目录)

                    9999999999.99

                    [3-b4-02]

                    987654321.12

    在cmd中写:debug >get-input-data.exe 3-b4-data.txt [3-b4-01] | 3-b4.exe >3-b4-result.txt

                                    >get-input-data.exe 3-b4-data.txt [3-b4-02] | 3-b4.exe >>3-b4-result.txt

                           (读取并输出读取的数据) 文件   文件中想要的数据的目录   管道  重定向

        此处也可以使用批处理,使效率更高

    文件比较

    现在有2个文件,一个是我的输出结果3-b4-data.txt,一个是标准答案3-b4-answer.txt,想要比较二者是否相同,在cmd中写:debug >comp 3-b4-data.txt  3-b4-answer.txt

    上述的comp可以用fc替换若 :debug >fc /w 3-b4-data.txt  3-b4-answer.txt     (/w表示忽略空格)

    展开全文
  • 输入输出重定向详解

    2021-05-21 13:35:51
    1. 标准输入输出我们知道,执行一个shell命令行时通常会1. 标准输入输出我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准...

    1. 标准输入与输出

    我们知道,执行一个shell命令行时通常会

    1. 标准输入与输出我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘;标准输出文件(stdout)和标准错误输出文件(stderr),这两个文件都对应终端的屏幕。进程将从标准输入文件中得到输入数据,将正常输出数据输出到标准输出文件,而将错误信息送到标准错误文件中。

    我们以cat命令为例,cat命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:

    $ cat config

    将会把文件config的内容依次显示到屏幕上。但是,如果cat的命令行中没有参数,它就会从标准输入中读取数据,并将其送到标准输出。例如:

    $ cat

    Hello world

    Hello world

    Bye

    Bye

    $

    用户输入的每一行都立刻被cat命令输出到屏幕上。

    另一个例子,命令sort按行读入文件正文(当命令行中没有给出文件名时,表示从标准输入读入),将其排序,并将结果送到标准输出。下面的例子是从标准输入读入一个采购单,并将其排序。

    $ sort

    bananas

    carrots

    apples

    apples

    bananas

    carrots

    $

    这时我们在屏幕上得到了已排序的采购单。

    直接使用标准输入/输出文件存在以下问题:

    输入数据从终端输入时,用户费了半天劲输入的数据只能用一次。下次再想用这些数据时就得重新输入。而且在终端上输入时,若输入有误修改起来不是很方便。

    输出到终端屏幕上的信息只能看不能动。我们无法对此输出作更多处理,如将输出作为另一命令的输入进行进一步的处理等。

    为了解决上述问题,Linux系统为输入、输出的传送引入了另外两种机制,即输入/输出重定向和管道。

    输入重定向

    输入重定向是指把命令(或可执行程序)的标准输入重定向到指定的文件中。也就是说,输入可以不来自键盘,而来自一个指定的文件。所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。

    例如,命令wc统计指定文件包含的行数、单词数和字符数。如果仅在命令行上键入:

    $ wc

    wc将等待用户告诉它统计什么,这时shell就好象死了一样,从键盘键入的所有文本都出现在屏幕上,但并没有什么结果,直至按下<ctrl+d>,wc才将命令结果写在屏幕上。

    如果给出一个文件名作为wc命令的参数,如下例所示,wc将返回该文件所包含的行数、单词数和字符数。

    $ wc /etc/passwd

    20 23 726 /etc/passwd

    $

    另一种把/etc/passwd文件内容传给wc命令的方法是重定向wc的输入。输入重定向的一般形式为:命令$ wc < /etc/passwd

    20 23 726

    $

    另一种输入重定向称为here文档,它告诉shell当前命令的标准输入来自命令行。here文档的重定向操作符使用

    >this text forms the content

    >of the here document,which

    >continues until the end of

    >text delimter

    >delim

    4 17 98

    在<

    由于大多数命令都以参数的形式在命令行上指定输入文件的文件名,所以输入重定向并不经常使用。尽管如此,当要使用一个不接受文件名作为输入参数的命令,而需要的输入内容又存在一个文件里时,就能用输入重定向解决问题。

    阅读(8043) | 评论(0) | 转发(3) |

    展开全文
  • 如果你想输入的数据来自文件,或者输出的数据放在文件里面,就需要用输入/输出重定向。 操作方式: 一、 编写一个程序,现在以下面这个求多个整数的平均值的程序为例 (VS2019环境下,记得最开头#define _CRT_...

          C语言环境下,默认的输入是键盘,默认的输出是显示器。

    如果你想输入的数据来自文件,或者输出的数据放在文件里面,就需要用输入/输出重定向。

    操作方式:

    一、

    编写一个程序,现在以下面这个求多个整数的平均值的程序为例

    (VS2019环境下,记得最开头#define _CRT_SECURE_NO_WARNINGS

    win10系统输入任意多个整数,Ctrl+Z再Enter得到结果)


                                                                              

     

     二、现在,我们想从文件中输入数据,也就是说,建立一个文件,里面放着我们想求平均值的那些数

    (1)文件建立在哪里呢?

     

     编译完成后,我们可以看到这个exe类型文件的路径

    test_10_30是我们的文件名称,自己随便起的,exe是文件类型,我们要把新文件建立在Debug里,和我们的test_10_30.exe放在同一个文件夹里

    (2)具体操作

    打开文件资源管理器找到 test_10_30.exe(嫌慢的话,推荐使用everything这个查找文件的软件)

     

     

    在Debug里建立一个文本文档,这里我们把它命名为in,命名后我们只能看到in,但是要清楚它的"全名"是in.txt,只不过.txt隐藏起来了

     

     

    在这个文本文档里面随便输入几个数  这里我们使用1 2 3     保存

    (3)那么问题来了,我们的程序怎么知道我想要这个文件里的数据呢?

       Windows按键+R,输入cmd,摁确定键

     

    在C:Users\百年树人>    后面输入cd,然后摁一下空格(cd意思是change directory,进入一个目录)

    把C盘(或D盘)到test_10_30.exe所在的文件夹(Debug)的路径都复制下来,然后粘贴到空格后面

     

    再摁Enter,路径就被挪下来了 

    后面输入test_10_30<in.txt

    (文件名<包含输入数据的文件名)

    再摁enter

    就可以得到结果

     

    三、

    我不想把结果打印再屏幕上,我想让它变成一个文件。这里随便给这个文件起个名字,叫out,我们预期它将存在Debug里面

    在test_10_30<in.txt后面加上>out.txt

    摁enter

    屏幕没有显示答案

     

    但是Debug里会出现一个文件名为out的文本文档,点进去就是答案

     

     

    展开全文
  • 而字符流的流向,在程序(或者说命令,基本是一回事儿)执行的,可以进行重定向。既然是“重”定向,那就有原来的默认的方向:每个 Unix/Linux 程序(命令)运行时都会默认打开三个文件描述符(file descriptor,FD):...
  • 通过实验理解这两个命令及shell输入输出重定向的重点。shell重定向介绍我们一般在使用shell命令的时候,多是通过键盘输入,在屏幕上查看命令的执行结果(包括正常输出与错误输出)。如果某些情况下,我们需...
  • 在工作或学习中,常常会遇到需要用到输入输出重定向。输入重定向是指把文件导入到命令中,而输出重定向则是指把原本要输出到屏幕的数据信息写入到指定文件中。相较于输入重定向,我们使用输出重定向的频率更高,所以...
  • 输入输出重定向、管道1.文件描述符:FD: 内核用来追踪在内存中已经打开的文件的属性(标识),是一个内存结构,需要空间来存放此信息2.标准输入输出INPUT : 标准输入: stdin , 描述符 : 0OUPUT: 标准输出: stdout 1...
  • linux中使用重定向符号可以实现输出输入重定向,默认条件下,标准输出和错误输出都是终端,用重定向符号可以把标准输出和错误内容进行重定向,例如把标准输出重定向到文件,看下面的详细解释1. 输出重定向:默认条件...
  • 重定向就是指将流重新分配至文件,或者将文件中的内容输出流。 假设现在程序已经生成了可执行文件 example 1 输入重定向 对于一般的可执行程序而言,如果需要输入数据一般是直接从键盘中获取,而使用输入重定向则...
  • 输入输出重定向 管道 二、分模块讲解 1.用到的所有头文件 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/...
  • 数据默认从程序流向显示屏,如果改变了它的方向,数据就流向其他地方,这就是输出重定向; Linux中一切皆文件,包括标准输入设备(键盘)和标准输出设备(显示器)在内的所有计算机硬件都是文件; 为了表示和区分已经打开...
  • Linux I/O重定向的原理和实现在Unix系统中,每个进程都有 STDIN、STDOUT和STDERR这3种标准I/O,它们是程序最通用的输入输出方式。几乎所有语言都有相应的标准I/O函数,比如,C语言可以通 过scanf从终端输入字符,...
  • 文件管理基础篇二,以及输入输出重定向追加重定向管理文件管理基础篇二,以及输入输出重定向追加重定向管理1.创建创建一个文件 touch file创建一个目录 mkdir text ##mkdir的意思是make directory2.删除rm ...
  • 大多数 UNIX 系统命令从你的终端...输出重定向 有两种方式 [root@localhost ~]# command1 > file1 会覆盖文件原来内容 [root@localhost ~]# command1 >> file2 不会覆盖文件原来内容,追加到文件末尾 [...
  • 从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思。那么,什么是输入输出方向呢?标准的输入输出方向又是什么呢?一般情况下,我们都是从键盘读取用户输入的数据,然后再把数据拿到程序(C语言程序、...
  • Linux标准输入输出重定向到串口指南邮箱:追风哥455546798@http://www.doczj.com/doc/f04262717e21af45b307a81b.html描述:设置linux系统的标准输入输出到com0(console口),以便维护人员在无网络、无显示器的情况下...
  • 1、有关I/O重定向默认情况下始终有3个"文件(unix下一切皆为“文件”)"处于打开状态,stdin (标准输入),stdout (屏幕标准输出),stderr (屏幕标准错误输出)。这3个文件和其他打开的文件都可以被重定向。对于重定向...
  • 附:Linux中是用>、>>及 程序>文件A:将程序的输出重定向送往文件A,文件A先前的内容将被清楚。 程序>>文件A:将程序的输出重定向送往文件A,并附加至文件A的末尾,文件A先前的内容不会被清楚。 程序
  • 输出重定向用于把程序的输出转移到另一个地方去,下面这条命令将IS的输出重定向到isout文件中。 这样,is的输出就不会先显示器上显出出来,而是出现在用户主目录的isout文件中,每一行显示一个文件名。 如果is-out...
  • 输出重定向:命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向。命令输出重定向的语法为:$ command > file这样,输出到显示器的内容就可以被重定向到文件。例如下面的命令在显示器...
  • 对于重定向简单的解释就是捕捉一个文件, 命令, 程序, 脚本, 或者甚至是脚本中的代码块(参见 和 )的输出, 然后将这些输出作为输入发送到另一个文件, 命令, 程序, 或脚本中.每个打开的文件都会被分配一个文...
  • java输入输出重定向

    2021-02-12 18:01:24
    如果你经常使用UNIX 或者 Windows shells (命令处理器),你可能经常像这样使用I/O重定向:$ command >outfile这个用法是说:运行一个命令,并将它的标准输出 (例如System.out.println的输出)定向到指定的文件而...
  • 而本节所要介绍的输入输出重定向,彻底能够从字面意思去理解,也就是:linux输入重定向:指的是从新指定设备来代替键盘做为新的输入设备;输出重定向:指的是从新指定设备来代替显示器做为新的输出设备。一般是用...
  • UNIX 输入/输出重定向

    2021-05-21 17:50:00
    输入/输出重定向大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到...
  • 什么叫输入输出重定向,就是原来输入输出都各自有标准(默认)方向,但是现在不用默认的就叫重定向。 输入输出都各自有标准(默认)方向分别是键盘,显示器。 Linux 中一切皆文件,包括标准输入设备(键盘)和标准...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 166,710
精华内容 66,684
关键字:

输入输出重定向