精华内容
下载资源
问答
  • 代码如下:#include<stdio>int main(int argc,char* argv[]){ char test[]=”c语言输出重定向测试”; int i; if (freopen(“F:\\杂文件\\test.txt”, “w”, stdout)==NULL) fprintf(stderr, “重定向错误!无法...
  • C++输入输出重定向

    千次阅读 2016-05-23 09:38:49
    OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 在C语言中,方法比较简单。使用...

    这个对经常在OJ上做题的童鞋们很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。

    在C语言中,方法比较简单。使用函数freopen():

    1. freopen("data.in","r",stdin);  
    2. freopen("data.out","w",stdout);  

    这样就把标准输入重定向到了data.in文件,标准输出重定向到了data.out文件。

    这两句代码之后,scanf函数就会从data.in文件里读,而printf函数就会输出到data.out文件里了。

    C++中,对流重定向有两个重载函数:

    1. streambuf* rdbuf () const;  
    2. streambuf* rdbuf (streambuf *)  

    就相当于get/set方法。

    1. streambuf *backup;  
    2. ifstream fin;  
    3. fin.open("data.in");  
    4. backup = cin.rdbuf();   // back up cin's streambuf  
    5. cin.rdbuf(fin.rdbuf()); // assign file's streambuf to cin  
    6. // ... cin will read from file  
    7. cin.rdbuf(backup);     // restore cin's original streambuf  

    注意最后我们使用了cin.rdbuf(backup)把cin又重定向回了控制台

    然而,如果用C语言实现同样的功能就不那么优雅了。

    因为标准控制台设备文件的名字是与操作系统相关的。

    在Dos/Windows中,名字是con

    freopen("con", "r", stdin);

    在Linux中,控制台设备是/dev/console

    freopen("/dev/console", "r", stdin);

    另外,在类unix系统中,也可以使用dup系统调用来预先复制一份原始的stdin句柄。

    展开全文
  • c++输入输出重定向

    2019-06-18 14:54:15
    OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 在C语言中,方法比较简单。使用...

    这个对经常在OJ上做题的童鞋们很有用。OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。

    在C语言中,方法比较简单。使用函数freopen():

    [cpp] view plaincopyprint?
    freopen(“data.in”,“r”,stdin);
    freopen(“data.out”,“w”,stdout);
    这样就把标准输入重定向到了data.in文件,标准输出重定向到了data.out文件。

    这两句代码之后,scanf函数就会从data.in文件里读,而printf函数就会输出到data.out文件里了。

    C++中,对流重定向有两个重载函数:

    [cpp] view plaincopyprint?
    streambuf* rdbuf () const;
    streambuf* rdbuf (streambuf *)
    就相当于get/set方法。

    [cpp] view plaincopyprint?
    streambuf *backup;
    ifstream fin;
    fin.open(“data.in”);
    backup = cin.rdbuf(); // back up cin’s streambuf
    cin.rdbuf(fin.rdbuf()); // assign file’s streambuf to cin
    // … cin will read from file
    cin.rdbuf(backup); // restore cin’s original streambuf
    注意最后我们使用了cin.rdbuf(backup)把cin又重定向回了控制台

    然而,如果用C语言实现同样的功能就不那么优雅了。

    因为标准控制台设备文件的名字是与操作系统相关的。

    在Dos/Windows中,名字是con

    freopen(“con”, “r”, stdin);

    在Linux中,控制台设备是/dev/console

    freopen("/dev/console", “r”, stdin);

    另外,在类unix系统中,也可以使用dup系统调用来预先复制一份原始的stdin句柄。

    展开全文
  • 重定向就是指将流重新分配至文件,或者将文件中的内容输出流。...符号是Unix、Linux重定向运算符。对于一个可执行程序而言(如example),它并不会关心它的输入是从键盘或是文件读取,输出输出到屏幕

    重定向就是指将流重新分配至文件,或者将文件中的内容输出流。

    假设现在程序已经生成了可执行文件 example

    1 输入重定向

    对于一般的可执行程序而言,如果需要输入数据一般是直接从键盘中获取,而使用输入重定向则可以直接从文件中获取出数据。

    假设有文本文件data,需要对data文件使用example程序,只需要输入命令:

    example < data

    <符号是Unix、Linux的重定向运算符。对于一个可执行程序而言(如example),它并不会关心它的输入是从键盘或是文件读取,输出是输出到屏幕还是文件中,它仅关心输入流或是输出流。而重定向运算符会将(data)文件与流关联,将data文件的内容引至example程序。

    2 输出重定向

    如果要将example程序的输出内容重定向到data文件,则只要输入命令:

    example > data

    “>” 符号是另一个重定向运算符,它可以将可执行程序的输出流从显示设备(屏幕)重定向输出到文件中。如果重定向输出的文件(如data)已经存在,通常会先将原文件删除,再重新写入内容。

    3 组合重定向

    1 重定向运算符不能将一个数据文件与另一个数据文件连接,也不能将一个可执行程序与另一个可执行程序相连接。如:

    data1 > data2 (错)
    example1 < example2 (错)

    2 使用重定向运算符时,输入不能来自一个以上的文件,输出也不能重定向至一个以上的文件。如:

    example < data1 < data2 (错)
    example > data1 data2 (错)

    4 输出内容重定向至日志文件

    假设一个可执行程序中有许多的输出,需要将这些输出的内容保存到日志文件中,并且让这个程序在后台执行,屏幕中将不再显示输出打印的内容,执行如下命令:

    ./example > ./mylog.log &

    ---------如有侵权,联系删除!

    展开全文
  • c++ cout重定向

    2021-09-14 15:29:53
    #include #include 一. std::streambuf* oldBuf = std::cout.rdbuf(); std::ofstream of("out.txt"); std::streambuf* fileBuf = of... //定向输出到控制台 linux: freopen("/dev/tty", "w", stdout); //还原没有验证


    #include <iostream>
    #include <fstream>

    一.

        std::streambuf* oldBuf = std::cout.rdbuf();
        std::ofstream of("out.txt");
        std::streambuf* fileBuf = of.rdbuf();
        std::cout.rdbuf(fileBuf);


        std::cout << "test out file ..." << std::endl;


        // 恢复cout原来的流缓冲区指针
        std::cout.rdbuf(oldBuf);

    二.

        #include <stdio.h>
        FILE *out = freopen("stdout.txt", "w", stdout);
        printf("%s\n", "hello verybody!!!");

    //还原参考: 用了freopen,却想恢复控制台输出的方法_jack_incredible的专栏-CSDN博客

    fflush(out);//将输出缓冲区清空

    win: freopen( "CON", "w", stdout ); //定向输出到控制台

    linux: freopen("/dev/tty", "w", stdout); 

    //还原没有验证

    展开全文
  • 源代码这是一个头文件,解决了命令行输入输出重定向问题,可以直接使用。测试代码如下: #include "console.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Console console; if( ...
  • LINUX C 输出重定向例子

    千次阅读 2014-01-08 10:23:39
    输出重定向
  • 当我们要调试一台基于linux设备时,如果出现问题,但是没有串口查看信息,这个时候就可以考虑使用telnet登入到设备,并用串口打印信息重定向到telent窗口的方案; 二、源码实现: #include &lt;stdio.h&gt...
  • C/C++ 标准输入输出重定向

    千次阅读 2016-09-20 11:36:19
    OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 在C语言中,方法比较简单。使用...
  • 现将A的标准输出和B的标准输入重定向,B的标准输入和A的标准输出重定向到一起。使得A收到输入等同B收到输入,逻辑处理后A可以直接使用结果。 B必须是一个可执行文件。起初研究了一下popen,但这个函数只能实现单向...
  • 2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。 脚本只使用标准输入、标准输出和标准错误 Shell会自动为我们打开和关闭...
  • ’)和输出重定向符(’>’),来从特定的文件中读取输入,输出到特定的地方(可以是文件,或者打印机啥的) 举个例子: 现有可执行文件tmp.exe,保存输入数据的文件input.txt,和保存输出数据的文件output.txt,...
  • printf("输出到终端"); // 重定向到文件 freopen("in.txt", "r", stdin); // 清空缓冲区,避免把之前写到终端的字符读进来 fflush(stdin); // 读入文件字符 while(~scanf("%s", &ch)){ // dosomething } //...
  • C++的实现  #include  #include using namespace std; int main() {   ofstream logTest("foo.log");   streambuf *oldbuf = cout.rdbuf(logTest.rdbuf());     cout  logTest    //...
  • Linux 输出重定向缓冲设置

    万次阅读 多人点赞 2017-01-04 12:36:51
    问题描述我写了一个Linux程序,程序很简单,源码如下:#include #include int main() { for(int i = 0; i ;i++) printf("hello world\n"); sleep(1000000); return 0; }在终端上执行时,打印出期望的信息:
  • 原因是: It looks like you need to flush stdout periodically (e.g. sys.stdout.flush()). In my testing Python doesn't automatically do this even with print until the program exits. ...
  • linux系统进程打印重定向实现

    千次阅读 2019-07-23 10:10:17
        实现打印重定向能有效提高调试debug效率,记录下最近工作中实现的打印重定向功能。基于之前的程序状态监测系统实现,分客户端和服务端;     客户端接收用户命令,确认是否需要重定向,代码如下: char *...
  • c/c++标准IO重定向

    2018-05-23 17:16:00
    OJ基本都是用标准输入输出(USACO除外)。但如果你在调试的时候也都是从控制台输入,那就太浪费宝贵的时间了。我们可以重定向标准输入,调试的时候从文件读,提交时从标准输入读。 在C语言中,方法比较简单。使用...
  • 我们在写自动化脚本的时候,有时会遇到有的路径太长...一般来说用到输出重定向的频率更高一些,所以又把输出重定向分为两类:标准输出重定向和错误输出重定向,模式也分为清空写入与追加写入两种模式。 标准输入重定向
  • 标准输入输出改为文件输入/输出,如果使用C的文件操作fwrite(), fread()或C++的文件流操作需要修改每一个输入输出语句,非常不方便。此时,采用重定向方法就可以用二三行代码解决问题。
  • C++中文件重定向详解

    千次阅读 2019-01-19 22:20:20
    或者想直接输出到某个data.txt文件,而不是打印在小黑窗里,就需要用到文件重定向。 本文主要介绍3种方案。 C++中可以rdbuf()方案。 C中可以用freopen(),和 {fscanf,fprintf},两种方案。 顺带一些坑。 ①...
  • Linux C中标准输入输出重定向

    千次阅读 2012-11-16 17:01:59
    1.关于backspace ...可用文件重定向作为输入。或者改用其他的函数来读取输入的字符,不过标准C中未提供这样的函数,只有少数编译器提供了。 2.简单的解决办法 system("busybox stty erase ^h");
  • 什么叫输入输出重定向,就是原来输入输出都各自有标准(默认)方向,但是现在不用默认的就叫重定向。 输入输出都各自有标准(默认)方向分别是键盘,显示器。 Linux 中一切皆文件,包括标准输入设备(键盘)和标准...
  • C++重定向

    2014-06-20 09:26:00
    C++是通过rdbuf函数来进行流重定向的,例如: #include #include using std::cout; using std::streambuf; using std::rdbuf; using std::ofstream; int main( void ) { ofstream fout( "out.txt" ); ...
  • LinuxC中的重定向功能,必须依靠等位文件描述符函数dup,该函数的介绍如下: dup和dup2用来复制文件描述符。 函数介绍: #include int dup(int oldfd); int dup2(int oldfd,int newfd); dup用来复制oldfd所指的文件...
  • 更多linux知识:linux目录索引 模拟实现shell 思路: 读取命令行的字符串,将一整句字符串以空格为分隔符分成若干个子串,再将每个子串的地址保存在一个数组argv中 使用fork函数创建一个子进程(fork函数)...
  • 2.在子進程里打开寫端,以及利用dup2()函數將stdout重定向到有名管道 3.跟着在子進程里使用execl()函數調用/bin/ls 4.在父進程里打開讀端,讀取子進程裏的標準輸出數據,也就識/bin/ls輸出得數據 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,079
精华内容 4,831
关键字:

c++输出重定向linux

linux 订阅
c++ 订阅